微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有主要版本子文件夹的 Wix 安装程序

如何解决带有主要版本子文件夹的 Wix 安装程序

我的 Product.wxs 文件中有以下代码

<Wix>
    <?define ProductVersion="!(bind.fiLeversion._957E198E_2074_A3FA_A554_6FE5D8E9F4FD)" ?>
    <?define MajorVersion="!(bind.property.ProductVersion.Major)" ?>

    <Product Id='*' Name='Software v$(var.MajorVersion)' Version='$(var.ProductVersion)' Manufacturer='...' UpgradeCode='...' Codepage='...'>
    [...]
    </Product>
</Wix>

以上内容基于此 Binding WIX FileVersion sub values? 问题的答案。

虽然它给了我以下错误

Light Compile Error

我的 B 计划有点像

<?define MajorVersion="!(bind.fiLeversion._957E198E_2074_A3FA_A554_6FE5D8E9F4FD.Major)" ?>

<?define MajorVersion="!(bind.fiLeversion.major._957E198E_2074_A3FA_A554_6FE5D8E9F4FD)" ?>

但那些也不起作用。

最终我想使用 MajorVersion 属性/变量作为安装目录的一部分。 <CustomAction Id='DIRCA_TARGETDIR' Property='TARGETDIR' Value='[ProgramFilesFolder][Manufacturer]\[MajorVersion]\[ProductName]' Execute='firstSequence' />

非常感谢任何帮助。

解决方法

经过更多的挖掘,我最终自己找到了答案。

<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
  <?define MainAssemblyVersion="!(bind.fileVersion._957E198E_2074_A3FA_A554_6FE5D8E9F4FD)" ?>
  <?define MajorVersion="!(bind.property.ProductVersion.Major)" ?>

  <Product Id='*' Name='Software v$(var.MajorVersion' Language='1033' Version='$(var.MainAssemblyVersion)' Manufacturer='...' UpgradeCode='...' Codepage='...'>
    [...]
    <!-- Initialize the 'TARGETDIR' directory property. -->
    <CustomAction Id='DIRCA_TARGETDIR' Property='TARGETDIR' Value='[ProgramFilesFolder][Manufacturer]\[ProductName] v$(var.MajorVersion)' Execute='firstSequence' />
    [...]
  </Product>
</Wix>

我相信我对 bind.property.ProductVersion 已经存在并且不必声明(我在第一个示例中所做的)这一事实感到部分困惑

一旦您拥有变量中的主要版本部分,使用它 $(var.MainAssemblyVersion) 就是它真正需要的全部。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。