Wix项目参考多个目的地位置如何?

时间:2011-05-09 22:11:22

标签: wix

我正在努力为我正在开展的一个项目设置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解决方案自动为每个源更改构建设置。

感谢您的帮助和消息!

戈兰

1 个答案:

答案 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>