【问题标题】:WiX x86 / x64 build using Platform attribute使用 Platform 属性构建 WiX x86 / x64
【发布时间】:2012-04-13 21:29:23
【问题描述】:

我正在使用以下定义来根据构建环境使我的设置脚本灵活。

<?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 ?>

详细我介意我在组件的每个 Win64 属性中使用的 win64Flag 变量。我也在包“平台”属性中使用平台。 但要回到 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(程序文件)和 x86(程序文件(x86))上的适当文件夹中。但是我在问自己,安装完成后我的应用程序没有启动的原因是什么。

我正在使用 x64 Windows,这可能是无法启动我的 x86 自动启动应用程序的原因吗?

有没有办法解决我使用 Win64 属性的警告?

【问题讨论】:

    标签: windows wix windows-installer wix3.5


    【解决方案1】:

    如果没有更多信息来诊断问题,我无法告诉您为什么在安装完成后您的应用无法启动,但我可以告诉您为什么会收到有关无效属性的警告。

    无效属性警告由 Visual Studio 生成,如果您在命令行上编译项目,您将看不到警告。如果 Visual Studio XML 编辑器识别您的 XML 文档的架构,它会自动执行 XML 架构验证。 Wix XML 架构将Win64 属性允许的值定义为yesno。 Visual Studio 发现您没有这些值之一,并善意地让您知道您没有遵守定义的架构。另一方面,Wix 首先对文档进行预处理,并将有问题的值替换为您在包含文件中定义的值,从而使文档通过架构验证。

    简而言之,此警告可能不是您所看到问题的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 2015-12-31
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      相关资源
      最近更新 更多