使用wix捆绑.net framework时遇到的问题

之前用wix bootstrapper写了一个安装包,现在需要在给安装包捆绑一个.net framework 4.6.1用来适配win7。

做之前也没多想,觉得直接用bootstrapper捆绑一个.net包就好,结果加了之后就出问题了。

因为我的安装包在UI项目中,会去HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall检查是否已安装。而在捆绑了.net安装包时,wix会在.net安装结束后就将应用信息写入了HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall,此时我的安装包还没开始执行,等到执行后,就会因为在注册表中检查到了自己,而误认为之前已经安装过,于是第一次安装无法成功进行。

最终解决办法是我给msi加了一个<RegistryKey>,在我的安装包安装完成后才去写入。而前面的检查也改成要同时满足【注册表Uninstall存在子项】和【RegistryKey存在】两个条件,才会当作已经安装过。

本质就是在外部增加一个能表示安装成功过的记录,不一定要依赖于注册表。

猜你喜欢

转载自www.cnblogs.com/GenyouNoChou/p/12508609.html