我正在努力为我正在从事的一个项目设置 wix。 我决定尝试一下,但到目前为止进展并不顺利。 我可能已经阅读了所有教程并在网上搜索但没有成功。
这是我的情况:
一个安装程序应安装在程序文件应用程序文件夹中
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 解决方案自动为每个源更改build设置。
感谢您的帮助和建议!
戈兰
最佳答案
根据我收集的描述中的 3. 和 4.,您需要将相同的文件安装在不同的位置,对吗?
您可以像下面的示例一样进行操作 - 相同的文件(构建计算机上的 path\to\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>
关于Wix 项目在多个目标位置的引用如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5943109/