Installation 在组件标记上使用自动生成的GUID安全吗

Installation 在组件标记上使用自动生成的GUID安全吗,installation,wix,windows-installer,Installation,Wix,Windows Installer,我的场景是这样的:我希望安装程序完全删除旧版本(除应用程序在其生命周期内创建的文件外的所有文件),并将其替换为新版本 在我的Wix脚本中,我使用自动生成的GUID(星号)作为产品ID和包ID,而我使用自己的GUID作为升级代码,它始终保持不变。关于我的场景,我不确定我是否可以安全地为组件标记使用自动生成的GUID(星号) 到目前为止,我正在使用NSIS。我想尝试一下Wix,但有点怀疑,因为论坛上的人说,学习Wix大约需要30天,而一个人可以在1-2天内开始使用NSIS。然而,对于典型用户需要的标

我的场景是这样的:我希望安装程序完全删除旧版本(除应用程序在其生命周期内创建的文件外的所有文件),并将其替换为新版本

在我的Wix脚本中,我使用自动生成的GUID(星号)作为产品ID和包ID,而我使用自己的GUID作为升级代码,它始终保持不变。关于我的场景,我不确定我是否可以安全地为组件标记使用自动生成的GUID(星号)


到目前为止,我正在使用NSIS。我想尝试一下Wix,但有点怀疑,因为论坛上的人说,学习Wix大约需要30天,而一个人可以在1-2天内开始使用NSIS。然而,对于典型用户需要的标准安装,我花了2天时间使用Wix获得了一个非常好的安装程序包。如果您有一点xml方面的背景知识,您可能就不必担心了。感谢Rob和所有其他贡献者创建Wix

是的,自动guid
组件/@guid
是安全的。它们是非常特别的,以确保GUID的生成方式在该组件的各个版本中都是稳定的,这样就不会违反

此外,如果您不与其他产品共享组件,您总是使用主要升级,您提前安排主要升级,那么您根本不必担心组件GUID,因为这两个组件GUID定义永远不会同时出现在计算机上。例如,
MajorUpgrade
元素的默认值正好提供以下信息:

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


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

谢谢你,罗布!我真的很感激Wix的原始作者在这里抽出时间回答用户的问题。没问题。我们花了很长时间才找到一种对组件guid稳定的算法。一旦成功,对每个人来说都是巨大的胜利。:)那么,如果您有一个使用显式guid的较旧版本的安装程序,该怎么办?然后将其改为使用
*
安全吗?(或者更确切地说,在哪些情况下会导致问题?)您将获得新的GUID,并且需要确保您没有违反组件规则。关于旁注“尽早安排主要升级”,请参阅此处讨论的问题:以下是有关组件GUID的一些一般信息-即何时应更改而不是:多文件组件不适合生成的GUID,因此它需要显式GUID,但仍然可以利用默认组件ID: