我使用以下定义来使我的设置脚本根据构建环境更加灵活。
<?if $(var.Platform)=x64 ?>
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
<?define win64Flag = "yes"?>
<?define TargetConfigurationPath = "bin\x64\Release"?>
<?else ?>
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?define win64Flag = "no"?>
<?define TargetConfigurationPath = "bin\x86\Release"?>
<?endif ?>
详细来讲,我关注的是win64Flag变量,我在每个组件的Win64属性中都使用它。我也在“包”中使用“平台”属性。 但是回到Win64属性,我是这样使用这个变量的:
Win64="$(var.win64Flag)"
我经常收到警告,告诉我在YesNoType属性中使用此语句是无效的。
我正在使用以下调用使用candle.exe构建此内容:
candle.exe -ext WixUtilExtension -dPlatform=x86 "Deployment\WiX Setup Project\SetupScript.wxs" -out "Deployment\TempBuildOutput\SetupScript x86.wixobj"
light.exe -ext WixUIExtension -ext WixUtilExtension "Deployment\TempBuildOutput\SetupScript x86.wixobj" -out "Deployment\TempBuildOutput\Installer_x86.msi"
我在脚本中使用了一些CustomAction,如果安装完成,则自动启动一个应用程序。这在x64构建中可以正常工作,但在x86构建中不行。
我认为Win64属性可能存在问题,或者更好的说,我使用的方式可能有误。但是根据我的想法,这段代码必须是正确的,因为文件已经安装到了x64(Program Files)和x86(Program Files(x86))的适当文件夹中。但是我在问自己,为什么我的应用程序在安装完成后没有启动。
我正在使用x64 Windows,这可能是启动我的x86自启动应用程序失败的原因吗?
有没有办法解决我对Win64属性使用的警告?