Мне нужно определить архитектуру операционной системы пользователя в моем инсталляторе, чтобы она отображалась в заголовке моего загрузчика. $ (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?