Wix 项目在多个目标位置的引用如何?

标签 wix

我正在努力为我正在从事的一个项目设置 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/

相关文章:

wix - 使用 WIX 自动更新应用程序安装程序?

wix - Pyro 和文件排序

oracle - 在 WiX 中,我如何测试 Oracle ODP.Net 是否存在注册表项(不是值)

wix - 提取 Burn bootstrapper 的内容

wix - 在 Wix 安装程序中定义私有(private)属性

.net - Wix 和 .NET Framework(先决条件)

Wix 创建一个只读的应用程序数据目录

wix - 产品的 x64 和 x86 版本之间的 WIX UpgradeCode 是否应该不同?

wix - 在我的 Product.wxs 中引用另一个 .wxs 文件

wix - 是否有一个变量我可以查询以找出是否在 FeaturesDlg 中选择了要安装的功能