WIX安装程序升级有问题。以前我们有两个版本的安装程序,一个为每台机器,另一个为每个用户。
目前,我们已经开发了一种双模式MSI。
双模式MSI升级了以前安装程序的PerUser版本(在PC 1上),选择了“自己安装”选项,但选择了“为所有人安装”(在PC 2上),则安装一个新产品。
我们是否做错了或者必须设置一些属性。我们在用WIX。
请帮帮忙
发布于 2015-04-24 21:51:17
如果您以前有过2设置,那么可能是因为您有2升级代码,并且需要处理这两者才能在所有情况下都工作吗?
我已经很久没有处理每一个用户的问题了,但是一般来说,您必须使用author your 升级表来为您的设置包括和升级代码,以检测您以前安装的所有内容。升级表允许您检测在安装新产品之前应该计划卸载的任意数量的以前安装。
FindRelatedProducts MSI操作将搜索目标计算机上的所有包,以便找到任何与升级表中指定的值匹配的升级代码属性。
按照建议创建一个详细日志文件:
msiexec.exe /I "File.msi" /QN /L*V "C:\Temp\msilog.log"/I =运行安装序列/L*V "C:\Temp\msilog.log"=详细的日志记录/QN =完全静默运行
发布于 2015-04-24 09:08:54
每个用户安装允许为不同用户多次安装相同的产品--也可以在不同的版本中安装。这使得升级和补丁处理起来相当困难,我完全不喜欢这个每个用户的概念。我宁愿把每台机器的安装程序设为标准.我不觉得在功能上失去了多少,但是在可管理性方面获得了很多。虽然这不是你的问题的答案,但值得指出的是,每个用户安装都是一个错误的概念--充其量。
我不知道为每台机器设置安装程序是否是一种选择,但我找到了一种方法,通过使用Installshield及其自定义的ISSetAllUsers自定义操作,将安装从每个用户迁移到每台机器。下面描述了这个过程:windows当安装策略不同时卸载以前的版本(每个用户,每台机器)
据我所知,Wix没有这样的自定义操作,但您可以使用Win32 API call ::MsiEnumRelatedProducts()编写自己的自定义操作,如Rob Mensching这里所述:如何从每个用户更改为所有用户安装?。
这里有一个类似的帖子供参考:perUser安装程序如何处理perMachine旧版本的程序?
这里有一个博客,描述(进一步)每个用户安装的问题:理解应用程序安装包的“每个用户”或“每个机器”上下文。
让我补充几点意见:
发布于 2015-04-24 12:14:03
我认为这是因为在您的安装程序中,默认模式是每个用户,因此它没有检测到每台机器。如果分配类型为“1”,则可以使用MSIGetProductInfo查找已安装的产品,然后可以将下列属性设置为每台机器产品的产品代码WIX_UPGRADE_DETECTED OLDERVERSIONBEINGUPGRADED
在FindRelatedProducts之后使用自定义操作按钮单击或调度它。这将告诉现有版本的安装程序和安装就像升级一样。
https://stackoverflow.com/questions/29841856
复制相似问题