我正在构建安装程序并使用heat.exe来获取所有必需的文件。但是我需要注册一些DLL和OCX文件,我看看如何做到这一点似乎有些争论如何实现注册这些文件,stackoverflow以及其他网站和论坛。
我想使用以下内容:SelfRegCost="1"
因为它看起来像是注册文件的最简单方法。芽人们不喜欢它,因为它可能会在修复或卸载程序时出现问题。
您对此方法有何看法?您建议我使用什么? 推荐的代码实现示例将受到高度赞赏。
提前感谢。
答案 0 :(得分:1)
简单地说,任何形式的自我注册(COM就是其中之一)都是反模式。其中一些原因有很多:
1)它们增加了安装的脆弱性
2)他们可以在失败时暂停安装。
3)他们没有记录任何失败原因的信息。
4)他们没有进程;安装程序不知道它们(没有修复)5)它们打破了Windows Installer的事务性质(无回滚)
6)他们放慢安装速度
7)他们隐藏了实施细节,无法观察或转换
我到目前为止说这不是意见问题,而是最佳实践事实。但我想最好的做法当然也只是意见。不过,在过去的20年里,我已经为数千名安装人员撰写了文章,我可以毫无疑问地说,应该尽可能地跳过自我注册。而是使用Heat来“收集”COM元数据并将其创建到您的wxs代码中,以便MSI可以为您本地处理此问题。如果热火无法获得所有细节,还可以采用其他技巧。
最后,尽可能不要使用COM。例如,您可以考虑使用RegFree COM清单来模拟组件的注册。