当使用Wix/Votive与Visual Studio集成创建设置项目时,COM注册似乎是功能集中的一个大漏洞。Visual Studio和集成的Visual Studio设置项目几乎毫不费力地做到了这一点。另一方面,Wix使它非常痛苦。
在构建过程中,Votive调用Heat.exe来获取引用的项目。为什么它不能同时获取COM互操作所需的注册表项呢?这样就可以将流程集成到构建中,并将开发人员从这种枯燥乏味的工作中解放出来。它还将维护一个声明式/数据驱动的安装过程。
有人研究过这样做吗?我想有必要编辑一些Wix MSBuild目标,我对MSBuild没有足够的信心来自己做。我真的很有兴趣听到任何尝试过的人的声音。
我不相信在构建过程中动态生成组件。我已经写了一整篇文章来讨论这种模式的脆弱性和不确定性行为。相反,我像对待系统的其他部分一样对待我的安装程序源代码,并预先编写它,并将其检入,以便构建仅仅编译。
在这种情况下,我使用热量来生成我的COM/COM可见dll的注册表数据。出于懒惰,我编写了一个很小的winforms实用程序,它在目录上放置了一个文件系统监视程序,每当有更改通知时,我就将该目录传递给heat。然后,我获得heat的输出,并使用XML编辑器将其加载到winform中,以提供高亮显示。我看看它写了什么,如果我喜欢它,我复制并粘贴到我的wxs文件。
根据请求更新URL:
处理大量文件