Как использовать значение ProgramFilesFolder в переменной в файле wxi

В моем файле wxi я хочу установить переменную с каталогом Program Files. Я хочу, чтобы он выбрал локализованное значение Program Files.

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

Я определил LocalizedProgramFilesFolder как:

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

Однако во время установки MyDirectoryвыбирается как:

"[ProgramFilesFolder]\MyFiles".

Он не расширяет ProgramFilesFolder. Как использовать значение ProgramFilesFolder в переменной в моем файле wxi?


person microsoftprogrammer    schedule 16.07.2013    source источник


Ответы (1)


Не уверен, почему вы используете переменную MyDirectory. Как сказано в документах WixVariable:

Переменные WiX не сохраняются в файле msi/msm/pcp, поэтому их нельзя использовать при установке файла MSI; это концепция только для WiX.

Его значение записывается в виде текста везде, где вы его используете. Таким образом, если вы хотите, чтобы значение имело свойства, заменяемые во время установки, вы должны использовать его только в таком контексте.

Обычно ProgramFilesFolder используется как Directory/@Id, который может иметь дочерний каталог, например MyFiles. Примечание. Directory/@Id также является свойством, поэтому его можно использовать как таковое.

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

INSTALLFOLDER используется вместо MyDirectory. Вы можете использовать все, что хотите, но это значение по умолчанию из шаблона проекта. Это все заглавные буквы, что делает его общественным достоянием. Значение общедоступного свойства можно передать в последовательность установщика из пользовательского интерфейса или с помощью msiexec или других программ, таких как загрузчики.

person Tom Blodget    schedule 16.07.2013