如何在wix 3.9中正确注册DLL

时间:2015-06-22 10:35:56

标签: wix windows-installer dllregistration

我正在构建安装程序并使用heat.exe来获取所有必需的文件。但是我需要注册一些DLL和OCX文件,我看看如何做到这一点似乎有些争论如何实现注册这些文件,stackoverflow以及其他网站和论坛。 我想使用以下内容:SelfRegCost="1"因为它看起来像是注册文件的最简单方法。芽人们不喜欢它,因为它可能会在修复或卸载程序时出现问题。

您对此方法有何看法?您建议我使用什么? 推荐的代码实现示例将受到高度赞赏。

提前感谢。

1 个答案:

答案 0 :(得分:1)

简单地说,任何形式的自我注册(COM就是其中之一)都是反模式。其中一些原因有很多:

1)它们增加了安装的脆弱性

2)他们可以在失败时暂停安装。

3)他们没有记录任何失败原因的信息。

4)他们没有进程;安装程序不知道它们(没有修复)

5)它们打破了Windows Installer的事务性质(无回滚)

6)他们放慢安装速度

7)他们隐藏了实施细节,无法观察或转换

我到目前为止说这不是意见问题,而是最佳实践事实。但我想最好的做法当然也只是意见。不过,在过去的20年里,我已经为数千名安装人员撰写了文章,我可以毫无疑问地说,应该尽可能地跳过自我注册。而是使用Heat来“收集”COM元数据并将其创建到您的wxs代码中,以便MSI可以为您本地处理此问题。如果热火无法获得所有细节,还可以采用其他技巧。

最后,尽可能不要使用COM。例如,您可以考虑使用RegFree COM清单来模拟组件的注册。

请参阅:Do not use the SelfReg and TypeLib tables