当前位置:  开发笔记 > 前端 > 正文

将InstallScope更改为"perMachine"后,如何修复wix设置的升级逻辑

如何解决《将InstallScope更改为"perMachine"后,如何修复wix设置的升级逻辑》经验,为你挑选了2个好方法。

我们使用wix为我们的应用程序创建设置.对于用户已安装旧版本应用程序的情况,我们使用MajorUpgrade XML元素进行重大升级.这一切都按预期工作:如果安装了旧版本,它将以透明方式升级.如果存在较新版本,则安装程序将以明确消息中止.

但是,我现在想将InstallScope从"perUser" 更改为"perMachine".不幸的是,这打破了升级逻辑.新安装程序似乎没有检测到并删除以前的"perUser"安装.相反,它只是在同一ProgramFiles位置的旧版本之上安装.用户可以在"添加/删除程序"列表中看到两个条目,并在桌面上看到两个相同的快捷方式(旧的用户特定的快捷方式和新的perMachine快捷方式).

如何在不破坏升级逻辑的情况下将安装程序从"perUser"转换到"perMachine"安装范围?



1> Rob Menschin..:

遗憾的是,Windows Installer不支持这一点.你的软件包外面的一些进程(一个bootstrapper/chainer?)必须管理从每个用户到每个机器的升级.



2> Mike Fuchs..:

从每台机器配置开始.


这将运行一个自动的每机器检查(如果您有MajorUpgrade元素工作,我推测),它不会接收以前的每用户安装:

Action start 15:46:35: FindRelatedProducts.
MSI (c) (D0:0C) [15:46:35:496]: FindRelatedProducts: current install is per-machine.  Related install for product '{0C6604FB-58EC-48B9-8259-5871EFDADEB9}' is per-user.  Skipping...
MSI (c) (D0:0C) [15:46:35:496]: FindRelatedProducts: current install is per-machine.  Related install for product '{0C6604FB-58EC-48B9-8259-5871EFDADEB9}' is per-user.  Skipping...

因此,在安装之前,请确保FindRelatedProducts对已安装在用户范围内的产品运行另一个调用(例如,如下所示):

   
1

1

1

这反过来发现每用户安装:

Action start 15:46:36: FindRelatedProducts.
FindRelatedProducts: Found application: {0C6604FB-58EC-48B9-8259-5871EFDADEB9}
MSI (c) (D0:88) [15:46:36:716]: PROPERTY CHANGE: Adding WIX_UPGRADE_DETECTED property. Its value is '{0C6604FB-58EC-48B9-8259-5871EFDADEB9}'.
MSI (c) (D0:88) [15:46:36:716]: PROPERTY CHANGE: Adding MIGRATE property. Its value is '{0C6604FB-58EC-48B9-8259-5871EFDADEB9}'.

无论在何处检查,现有产品都将被删除.

Action start 15:46:41: RemoveExistingProducts.
RemoveExistingProducts: Application: {0C6604FB-58EC-48B9-8259-5871EFDADEB9}

另请注意:这并不能解决当您拥有两用安装程序时出现的基本困难:计算机上的User1可能安装在每个用户范围内,然后User2安装每台计算机.User1将在他的程序/功能表中看到这两个安装,我不知道哪个安装优先.因此,请考虑仅按计算机安装.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有