2013-07-16 20 views
8

W moim pliku wxi, chcę ustawić zmienną, która ma katalog Program Files. Chcę, aby wybrał zlokalizowaną wartość plików programu.Jak używać wartości programu ProgramFilesFolder w zmiennej w pliku wxi

<?define MyDirectory="!(wix.LocalizedProgramFilesFolder)\MyFiles"?> 

Mam zdefiniowane LocalizedProgramFilesFolder jak:

<WixVariable Id="LocalizedProgramFilesFolder" Value="[ProgramFilesFolder]"/> 

Jednak podczas instalacji MyDirectoryis obierany jak:

"[ProgramFilesFolder]\MyFiles". 

To nie rozszerza ProgramFilesFolder. Jak używać wartości programuFileFolder w zmiennej w moim pliku wxi?

Odpowiedz

7

Nie wiem, dlaczego używasz zmiennej MyDirectory. Jako WixVariable docs powiedzieć: zmienne

Wix nie ustępują w/MSM plik MSI/PCP, więc nie można stosować, gdy jest zainstalowany plik MSI; Jest to koncepcja tylko WiX.

Jego wartość jest zapisywana jako tekst do dowolnego miejsca. Tak więc, jeśli chcesz, aby wartość miała właściwości podstawione podczas instalacji, musisz użyć jej tylko w takim kontekście.

Typowe użycie programu ProgramFilesFolder jest katalogiem/@ ID, który może mieć katalog potomków, na przykład MyFiles. Uwaga: katalog/@ identyfikator jest również własnością, więc może być używany jako taki.

<Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
      <Directory Id="INSTALLFOLDER" Name="MyFiles" /> 
     </Directory> 
    </Directory> 

INSTALLFOLDER jest używany zamiast MyDirectory. Możesz użyć tego, co chcesz, ale to domyślne z szablonu projektu. To wszystko czapki, co czyni go własnością publiczną. Publiczna wartość właściwości może zostać przekazana do sekwencji instalatora z interfejsu użytkownika lub przy użyciu msiexec lub innych programów, takich jak moduły ładujące.