我正在努力为我正在开展的一个项目设置wix。 我决定尝试wix尝试到目前为止还不顺利。 我可能已阅读所有教程并搜索网络但未成功。
这是我的情况:
一个设置应安装在程序文件app文件夹中
1.)Windows表单应用程序
2.)Windows应用程序使用的Web应用程序
3.)web和win应用程序使用的共享lib1
4.)web和win应用程序使用的共享lib2
......等等。
我正在使用项目引用来加热项目输出。 我给了每个项目目录ID,以便稍后我可以在实际安装位置使用它作为参考。 看起来我不能在多个位置上拥有相同的项目输出 我也不能多次引用相同的项目。
如何在多个目标位置上创建使用项目输出的安装程序。 以下是我的product.wxs
中的示例 <!-- Define Directory Structure -->
<Directory Id="TARGETDIR" Name="SourceDir">
<!-- ProgramFiles -->
<Directory Id="ProgramFilesFolder">
<Directory Id="dirManufacturer" Name="TEST_[Manufacturer]">
<Directory Id="INSTALLLOCATION" Name="TEST_[ProductName]">
<!-- Filled With Referenced project -->
<Directory Id="dirControl" Name="Control">
<Directory Id="dirControlOutput" />
<Directory Id="dirSearchAndIndexOutput" />
<Directory Id="dirControlLib" />
<Directory Id="dirControlAndWebLib" />
<Directory Id="dirLuceneAnalyzersOutput" />
</Directory>
<!-- Filled With Referenced project -->
<Directory Id="dirWeb" Name="Web">
<Directory Id="dirWebOutput" />
<Directory Id="dirWebBin" Name="bin">
<Directory Id="dirUrlRewriterOutput" />
<Directory Id="dirSearchAndIndexOutput" />
<!-- TODO: Fix This
<Directory Id="dirSearchAndIndexOutput" />
<Directory Id="dirControlAndWebLib" />
<Directory Id="dirLuceneAnalyzersOutput" />
-->
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
<!-- StartMenu -->
<Directory Id="ProgramMenuFolder">
<Directory Id="dirProgramsMenu" Name="TEST_[ProductName]">
</Directory>
</Directory>
<!-- CommonApplicationData -->
</Directory>
我真的想要了解所有这些是如何工作的,但我发现的一切都指出这种情况要么不可能,要么直接需要硬手动引用文件。
我的一般想法是让Visual Studio解决方案自动为每个源更改构建设置。
感谢您的帮助和消息!
戈兰
答案 0 :(得分:3)
从我收集的描述中的3.和4.你需要在不同的地方安装相同的文件,对吗?
您可以像下面的示例中那样执行 - 同一文件(构建计算机上的路径\到\ lib1.dll)将在目标计算机上安装两次,如App \ lib1.dll和Web \ lib1.dll 。您只需要2个不同的组件来引用相同的源文件。
<Directory Id="AppDir" Name="App">
<Component Id='lib1_app.dll' Guid='*'>
<File Id='lib1_app' Name='lib1.dll' Source='path\to\lib1.dll' KeyPath='yes'>
</Component>
</Directory>
<Directory Id="WebDir" Name="Web">
<Component Id='lib1_web.dll' Guid='*'>
<File Id='lib1_web' Name='lib1.dll' Source='path\to\lib1.dll' KeyPath='yes'>
</Component>
</Directory>