每次安装后,让WiX在注册表中写入新的GUID

时间:2009-12-11 00:07:52

标签: installer wix guid nsis

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

这是NSIS代码:

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

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

此时我已准备好相当完整的WiX安装程序,但我无法弄清楚如何复制此功能。 WiX中有什么东西可以在安装时生成GUID,还是需要编写自定义事件?如果我能避免写一个最好的小dll。

1 个答案:

答案 0 :(得分:0)

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

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