Installation 让WiX在每次安装后将新GUID写入注册表

Installation 让WiX在每次安装后将新GUID写入注册表,installation,wix,guid,nsis,Installation,Wix,Guid,Nsis,我正在尝试将NSIS安装程序移植到WiX。每次安装程序运行时,它都会将一个注册表项设置为一个新的GUID值,这样当我的应用程序运行时,它就可以看到它是否在安装后第一次运行。在第一次运行时,应用程序将另一个注册表项设置为安装程序的GUID值。只要两个键匹配,我就知道安装程序还没有运行 以下是NSIS代码: #Write InstallGUID Call CreateGUID Pop $0 WriteRegStr HKLM "${REGKEY}" InstallGUID $0 及 现在我已经准备好

我正在尝试将NSIS安装程序移植到WiX。每次安装程序运行时,它都会将一个注册表项设置为一个新的GUID值,这样当我的应用程序运行时,它就可以看到它是否在安装后第一次运行。在第一次运行时,应用程序将另一个注册表项设置为安装程序的GUID值。只要两个键匹配,我就知道安装程序还没有运行

以下是NSIS代码:

#Write InstallGUID
Call CreateGUID
Pop $0
WriteRegStr HKLM "${REGKEY}" InstallGUID $0


现在我已经准备好了一个相当完整的WiX安装程序,但是我不知道如何复制这个功能。WiX中是否有在安装时生成guid的功能,或者是否需要编写自定义事件?如果我可以避免编写一个小dll,那将是最好的。

如果您没有找到更好的解决方案,您可以将该代码单独放入NSIS脚本,并使其成为静默安装,以便您可以从Wix+MSI安装程序静默运行NSIS脚本

我会注意在NSIS代码中执行适当的错误捕获,并返回/设置要返回给Wix的错误代码,以便任何与注册表相关的故障/错误都可以传达给Wix安装程序

Function CreateGUID
  System::Call 'ole32::CoCreateGuid(g .s)'
FunctionEnd