2013-04-20 57 views
19

使用自动生成的GUID我的情况是这样的:我想要安装完全删除旧版本(除了那些在其生命周期由应用程序创建的所有文件),并用新的版本来替换它。它是安全的组件式标签

在我的Wix脚本中,我使用自动生成的GUID(星号)作为Product ID和Package ID,而我使用自己的GUID作为始终保持不变的UpgradeCode。我不确定我是否可以安全地使用自动生成的GUID(星号)作为组件标签,关于我的场景?

到目前为止,我正在使用NSIS。我想试试威克斯,但有一点疑问,因为论坛上的人们说你需要花30天的时间才能了解它,而在1-2天内就可以开始使用NSIS。但是,对于典型用户需要的标准安装,我花了2天的时间才能使用Wix获得一个非常好的安装程序包。如果你在xml中有一点背景,你应该不用担心。感谢Rob和所有其他贡献者为创建Wix!

+0

这里是关于组件GUID的一些一般信息 - 即当它们应该改变,而不是:https://stackoverflow.com/questions/1405100/change-my-component-guid-in-wix/1422121# 1422121 – 2017-07-15 23:16:58

回答

24

是的,自动引导Component/@Guid是安全的。他们做的非常特别,以确保GUID的生成方式在该组件的版本中保持稳定,从而不会违反Component Rules

此外,如果你不与其他产品共享组件和你总是使用重大升级您安排的重大升级初期,那么你不必担心的组件GUID威力,因为两个Component GUID定义将永远不会同时在机器上。例如,对于MajorUpgrade元素默认给你正是这一点:

<MajorUpgrade DowngradeErrorMessage='A newer version of [ProductName] is installed.' /> 

所以,答案是“是的”。 :)

+7

感谢罗!我真的很感谢Wix的原作者在这里抽出时间回答用户提问。 – 2013-04-22 08:45:31

+0

没问题。花了很长时间才得到一个稳定的Component Guids算法。每个人一旦工作就可以获得巨大的胜利。 :) – 2013-04-22 11:06:12

+1

那么如果你有一个使用显式GUID的安装程序的旧版本呢?是否可以安全地将它改为使用'*'来代替? (或者说,那些会导致问题的情况是什么?) – jalf 2013-10-10 09:32:47