使用dark从MSI创建WiX项目

使用dark从MSI创建WiX项目,wix,windows-installer,Wix,Windows Installer,我们有一个解决方案,其中大约有100个项目。我们用vdproj创建了大约20个安装程序 我需要创建WiX项目,它将创建.msi而不是vdproj。我使用dark.exe从msi生成wxs文件,并从中获得二进制文件。 我成功地创建了一个msi文件,一切都很好 但后来我开始考虑这个问题。如果其中一些项目发生了更改,那么在重建wix项目后,这些更改是否会应用于应用程序?或者wxs将引用旧版本,要更新它,必须有人重建vdproj项目以创建新的msi,然后再次使用dark.exe 我为一个愚蠢的问题感到抱

我们有一个解决方案,其中大约有100个项目。我们用vdproj创建了大约20个安装程序

我需要创建WiX项目,它将创建.msi而不是vdproj。我使用dark.exe从msi生成wxs文件,并从中获得二进制文件。 我成功地创建了一个msi文件,一切都很好

但后来我开始考虑这个问题。如果其中一些项目发生了更改,那么在重建wix项目后,这些更改是否会应用于应用程序?或者wxs将引用旧版本,要更新它,必须有人重建vdproj项目以创建新的msi,然后再次使用dark.exe

我为一个愚蠢的问题感到抱歉,这是我第一次使用wix并与安装人员一起工作


提前感谢您

您已经走上了正确的道路。VDPROJ输出是.msi文件,因此使用dark将其转换为wxs文件是正确的做法。现在您有了wxs文件(用于构建wix部署的基本源文件),您可以在解决方案中删除VDPROJ项目,只更新和使用wxs文件(我相信wix也有一个visual studio项目模板可用)

随着项目的更改,您必须使用新的程序集或可交付文件更新wxs文件


这样做比使用通配符拾取更好(无论如何,从技术上讲,WiX无法做到这一点),因为明确控制目标机器上的内容是首选。我见过很多情况,开发人员不小心将引用添加为不需要的构建输出,有时该引用无法根据许可协议或其他法律重新分发。

您已经走上了正确的道路。VDPROJ输出是.msi文件,因此使用dark将其转换为wxs文件是正确的做法。现在您有了wxs文件(用于构建wix部署的基本源文件),您可以在解决方案中删除VDPROJ项目,只更新和使用wxs文件(我相信wix也有一个visual studio项目模板可用)

随着项目的更改,您必须使用新的程序集或可交付文件更新wxs文件


这样做比使用通配符拾取更好(无论如何,从技术上讲,WiX无法做到这一点),因为明确控制目标机器上的内容是首选。我见过许多开发人员不小心将引用添加为不需要的生成输出的情况,有时该引用无法根据许可协议或其他法律重新分发。

谢谢。我想,我不太明白到底发生了什么。我必须做更多的研究。我是否正确理解:假设我们在wxs文件中有foo.dll作为一个组件。如果我们更改项目foo,我们必须将新的foo.dll放入wix项目的源文件夹?不,文件foo.dll的组件(容器)不需要更改。如果有效负载发生更改(添加/删除/删除),则只需更改wxs文件。在WiX站点或MSDN上阅读组件规则是个好主意,但一般规则是一个二进制=一个组件。是的,我已经读过了。非常感谢你的回答,达蒙。非常感谢,谢谢。我想,我不太明白到底发生了什么。我必须做更多的研究。我是否正确理解:假设我们在wxs文件中有foo.dll作为一个组件。如果我们更改项目foo,我们必须将新的foo.dll放入wix项目的源文件夹?不,文件foo.dll的组件(容器)不需要更改。如果有效负载发生更改(添加/删除/删除),则只需更改wxs文件。在WiX站点或MSDN上阅读组件规则是个好主意,但一般规则是一个二进制=一个组件。是的,我已经读过了。非常感谢你的回答,达蒙。非常感谢。