【问题标题】:Wix - replacing seperate 32bit and 64-bit MSIs with one newer 32-bit MSIWix - 用一个更新的 32 位 MSI 替换单独的 32 位和 64 位 MSI
【发布时间】:2014-06-13 03:19:19
【问题描述】:

背景

我们有 64 位和 32 位版本的 MSI:

  • app.msi
  • app_x86.msi

这些是使用 Wix 创建的,并为每个 MSI 定义了单独的升级代码。

我们还有一个 WIX 捆绑包 EXE,它根据平台决定使用哪个 MSI。

问题

64 位版本不再存在,我们希望所有升级客户端(MSI 或 EXE,32 或 64 位)使用 32 位版本。

我想我仍然需要 2 个 MSI,每个都匹配旧的升级代码,1 个用于 32 位,1 个用于 64 位,但内容相同......

理想情况下,我有 1 个 MSI 可以升级 2 个不同的升级代码,但我想这是不可能的。

我希望以上内容很清楚......我们已经尝试过: - 生成单个 32 位 dll (app_x86.msi) - 复制以匹配之前的 64 位 (app.msi) - 确保两个 MSI 具有与以前相同的升级代码

但我们最终还是进行了并行安装。

【问题讨论】:

    标签: wix 32bit-64bit


    【解决方案1】:

    添加另一个答案,因为我需要代码格式。 This Wix sample 似乎是一个不错的基本开始。

    我没有正确设置这台机器来测试这个 XML 代码,但是这样的东西应该可以工作:

    为 X32 升级表条目

    <Property Id="PREVIOUSVERSION_X32" Secure="yes" />
    
    <Upgrade Id="YOUR_GUID_X32_EDITION">  
       <UpgradeVersion 
          Minimum="1.0.0" Maximum="99.0.0" Property="PREVIOUSVERSION_X32" 
          IncludeMinimum="yes" IncludeMaximum="no" />
    </Upgrade>
    

    为 X64 升级表条目

    <Property Id="PREVIOUSVERSION_X64" Secure="yes" />
    
    <Upgrade Id="YOUR_GUID_X64_EDITION">  
       <UpgradeVersion
          Minimum="1.0.0" Maximum="99.0.0" Property="PREVIOUSVERSION_X64"
          IncludeMinimum="yes" IncludeMaximum="no" />
    </Upgrade> 
    

    以下是如何在编译的 MSI 文件中实现类似升级方案的快照:

    【讨论】:

    • 嗯,你在收集我的选票方面做得很棒!非常感谢。我会投票,今天早上试试,当我让它工作时,我会给你投尽可能多的选票/积分/奖品。你是明星!
    • 请记住要好好测试它,因为我没有编译和测试它,并且还使用相同的设置运行测试以尝试重新安装自身。永远不能替代编译后的真实测试。有些人喜欢允许旧设置卸载旧版本,而其他人则使用降级保护机制。这一切都可以使用标准的升级表来实现。不惜一切代价避免自定义操作 - 通常有更好的内置方法。
    • 谢谢。我们现在完成了不可能的事情——64 位应用程序的 32 位升级。我最小化了我们的安装,甚至设法在我们的 MSI 中引导一个 EXE。魔法!
    【解决方案2】:

    您可以将多个升级代码添加到 upgrade table 并在安装过程中将其卸载。也见this sample

    升级代码标识一个“产品系列”(或技术上与升级代码匹配的多个产品代码),升级表中的每个条目将为所有匹配该特定产品代码的产品代码定义一个通用升级策略升级代码。

    换句话说,您只需将两个不同的升级代码添加到升级表中,编写其余字段,这应该可以工作。您可能需要两个 ActionProperties。请记住将它们都添加到SecureCustomProperties。我相信 Wix 会自动处理这个问题。如果不这样做,则 PUBLIC 属性值不会从客户端传递到安全客户端 PC(这是大多数具有较新 Windows 版本的 PC)上的服务器安装过程,并导致 X 文件问题。客户端进程以交互式用户权限运行,服务器进程以 LocalSystem(完全系统访问权限)运行。

    【讨论】:

    • 老兄!而已。现在我正在努力寻找一个好的例子(我发现 Wix doco 要么很难找到,要么缺乏合理的例子)。我可能找错地方了……你有升级表的例子吗?
    • 特别是我试图用 Wix 翻译上面链接的 MSI doco - 是升级和升级版本
    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    相关资源
    最近更新 更多