Visual studio 2012 WIX工具集集成到VS 2012初学者问题中
我的公司最近强迫我们使用Wix工具集(v.4.0.12),因为我们升级到Visual Studio 2012,不幸的是,它不再包含安装程序项目 我的问题如下。我有一个很大的解决方案,有很多项目,它们都会产生一个exe文件和几个DLL 然后,我在解决方案中创建一个Wix安装项目,并添加对生成exe文件的项目的引用。在该项目引用的属性中,我设置了Visual studio 2012 WIX工具集集成到VS 2012初学者问题中,visual-studio-2012,wix,votive,Visual Studio 2012,Wix,Votive,我的公司最近强迫我们使用Wix工具集(v.4.0.12),因为我们升级到Visual Studio 2012,不幸的是,它不再包含安装程序项目 我的问题如下。我有一个很大的解决方案,有很多项目,它们都会产生一个exe文件和几个DLL 然后,我在解决方案中创建一个Wix安装项目,并添加对生成exe文件的项目的引用。在该项目引用的属性中,我设置了Harvest:true和项目输出组:Binaries 我希望WiX项目的构建能够从被引用的项目中获取依赖项,这样我就不需要手动添加引用,因为这会给我更多的
Harvest:true
和项目输出组:Binaries
我希望WiX项目的构建能够从被引用的项目中获取依赖项,这样我就不需要手动添加引用,因为这会给我更多的维护
此外,如果对引用的项目文件运行heat.exe
,则只会获得文件的exe输出,而不会获得项目所依赖的DLL
我假设以上内容是相当标准的,wix工具应该能够为我收集这些信息。我真的很想知道,为什么在网上广泛搜索后,却找不到任何有类似问题的人
如果有人知道上述原因,请尝试向我发送一份关于如何使用WiX的基本教程。我似乎不可能找到合适的版本。当v4.0.12还没有推出时,我不确定您是如何使用它的!:)Wix v3.8是最新版本: 中有大量的指南,您也可以在中找到相当多的信息 但是,对于您的特定情况,您需要手动将每个项目的输出及其依赖项包含到安装程序中,因为还不支持自动采集:
<Component>
<File Id="ProjectA.Output"
Name="$(var.ProjectA.TargetFileName)"
Source="$(var.ProjectA.TargetPath)"
KeyPath="yes" />
</Component>
<Component>
<File Id="ProjectA.NlogDependancy"
Name="NLog.dll"
Source="$(var.ProjectA.TargetDir)\Nlog.dll"
KeyPath="yes" />
</Component>
<Component>
<File Id="ProjectB.Output"
Name="$(var.ProjectB.TargetFileName)"
Source="$(var.ProjectB.TargetPath)"
KeyPath="yes" />
</Component>
<Component>
<File Id="ProjectB.AutofacDependancy"
Name="Autofac.dll"
Source="$(var.ProjectB.TargetDir)\Autofac.dll"
KeyPath="yes" />
</Component>
这并不是很难做到,除非您有几百个二进制文件,否则不会花费太长时间。WiX v3.6及更高版本支持VS2012。WiX v4.0刚刚启动,目前不推荐使用。v4.0中有很多突破性的变化,所以现在请继续使用v3.x版本 “还愿”中的自动收割功能未完全发挥作用。这就是它在默认情况下被禁用的原因。发现许多项目类型正在破坏它。正如您所发现的,收获不会遍历多个项目引用。所有需要更多工作才能正常工作的东西
同时,您可以在
组件
元素中列出文件
元素。我在尝试创建解决方案的.msi安装时遇到类似问题
为了克服这个问题,并使它长期持续,即使在我向我的项目插入新的.dll和其他依赖项时,并使其自动化,我做了以下操作
在我的Product.wxs中,我有一个“目录”
构建wix项目后,它将在MainProject目录中创建Includedheat.wxs文件,其中列出MainProject\bin\Debug目录中的所有文件
下一步-将Includedheat.wxs添加到wix项目中,然后在我的功能部分添加:
<!--Add Component-->
<Feature Id="MainApplication" Title="Main Application" Level="1">
...
<ComponentGroupRef Id="Components" />
</Feature>
...
现在,一旦重建并安装.msi,驻留在MainProject\bin\Debug目录中的所有内容也将包含在目标位置的MyAppDir目录中
有关更多信息:
我遵循以下指南:
还建议阅读以确定在命令中使用的内容。Hi。谢谢你的回复。有趣的是,4.0.12版没有列出,但我从这里得到了它。可能仍然是beta版,但可能是唯一一个集成到VisualStudio2012中的版本。我读了很多关于我的问题的书,认为heat.exe运行项目的依赖项,但不幸的是,事实并非如此。我会看看我是否应该选择另一个安装程序。感谢againWiX 3.7还集成了VS2012。但此时仍然需要此答案。是否有用于获取输出的MSBuild任务?我想,我在网上看到了什么地方,但现在找不到了。
"%wix%\bin\heat" dir "$(SolutionDir)MainProject\bin\Debug" -dr INSTALLFOLDER -scom -frag -srd -sreg -gg -cg Components -var var.MainProject.TargetDir -o $(SolutionDir)MainProject\Includedheat.wxs
<!--Add Component-->
<Feature Id="MainApplication" Title="Main Application" Level="1">
...
<ComponentGroupRef Id="Components" />
</Feature>