Wix - использовать NTVersion64 в переменной для определения разрядности операционной системы - PullRequest
0 голосов
/ 09 марта 2020

Мне нужно определить архитектуру операционной системы пользователя в моем инсталляторе, чтобы она отображалась в заголовке моего загрузчика. $ (var.Platform) не работает, так как загрузчик x86, и всегда возвращает «x86». У меня был некоторый успех при использовании NTVersion64 для разграничения между 32 и 64 битами, чтобы установить правильный .msi, используя его в условиях установки, например так:

<Chain>
      <MsiPackage Id="x64" DisplayName="name (64-bit)" InstallCondition="VersionNT64" SourceFile="$(var.SolutionDir)name-win10.Installer\bin\Debug\name-Debug-x64.msi"/>
      <MsiPackage Id="x86" DisplayName="name (32-bit)" InstallCondition="NOT VersionNT64" SourceFile="$(var.SolutionDir)name-win10.Installer\bin\Debug\x86\name-Debug-x86.msi"/>
</Chain>

У меня была идея использовать VersionNT64 чтобы определить свою собственную переменную, чтобы я мог написать что-то вроде следующего и затем получить доступ к определенной переменной в моем проекте начальной загрузки:

<?if $(var.VersionNT64) = "true"?>
    <?define OSArchitecture = "x64"?/>
<?endif?>

Однако это не работает, так как не может найти переменную $ (var.VersionNT64) Может кто-нибудь сказать мне, как я могу использовать NTVersion64, чтобы проверить, работает ли .msi в системе x86 или x64?

1 Ответ

1 голос
/ 09 марта 2020

операторы являются операторами препроцессора и оцениваются во время сборки. Они не используются во время выполнения.

Упомянутые вами условия VersionNT64 и Not VersionNT64 являются правильным способом узнать, используете ли вы 64-битную или 32-битную во время установки.

...