使用Wix / Votive创建使用Visual Studio集成的安装项目时,COM注册似乎是功能集中的一个大漏洞。 Visual Studio和集成的Visual Studio安装项目几乎毫不费力地完成了这项工作。另一方面,Wix使得非常痛苦。
在构建过程中,Votive调用Heat.exe来收集引用的项目。为什么不能在那时收获COM Interop所需的注册表项呢?这会将流程整合到构建中,并让开发人员摆脱这种令人费解的苦差事。它还将维护声明/数据驱动的安装过程。
有没有人考虑做这样的事情?我想有必要编辑一些Wix MSBuild目标,我对MSbuild没有足够的信心自己做。我会非常感兴趣听取任何人的意见。
答案 0 :(得分:2)
我不相信在构建期间动态生成组件。我写了关于该模式的脆弱性和非确定性行为的全文。相反,我对待我的安装程序源就像系统的其他部分一样,并预先编写它并检查它以便构建仅仅编译。
在那种情况下,我使用heat来为我的COM / COM Visible dll生成注册表数据。懒惰,我写了一个小的winforms实用程序,将文件系统观察器放在一个目录上,每当有更改通知时,我都会将目录关闭以加热。然后我获取heat的输出并使用XML编辑器将其加载到winform中以提供突出显示。我看看它写了什么,如果我喜欢它,我将其复制并粘贴到我的wxs文件中。
根据要求更新了URL: