Ссылки на проект Wix в нескольких местах назначения, каким образом?

#wix

#wix

Вопрос:

У меня проблемы с настройкой wix для одного проекта, над которым я работаю. Я решил попробовать wix, и пока все идет не очень хорошо. Я прочитал, вероятно, все учебные пособия и безуспешно искал в сети.

Вот моя ситуация: одна программа установки должна быть установлена в папке program files app
1.) Приложение Windows forms
2.) Веб-приложение, которое используется приложением Windows
3.) Общий lib1, используемый веб-приложениями и win-приложениями
4.) Общий lib2, используемый веб-приложениями и win-приложениями
… и т. Д

Я использую ссылки на проект для сбора выходных данных проекта с помощью heat. Я присвоил каждому проекту идентификатор каталога, чтобы позже я мог использовать это в качестве ссылки в реальном месте установки. Похоже, что я не могу иметь один и тот же результат проекта в более чем одном месте, я также не могу ссылаться на один и тот же проект более одного раза.

Как я могу создать установщик, который использует выходные данные проекта в нескольких местах назначения. Вот пример из моего продукта.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:

Из 3. и 4. в описании, как я понимаю, вам нужен один и тот же файл, установленный в разных местах, верно?

Вы могли бы сделать это, как в примере ниже — тот же файл (путь к lib1.dll на компьютере сборки) будет дважды установлена на целевой машине, поскольку Applib1.dll и как Weblib1.dll . Вам просто нужны 2 разных компонента, которые ссылаются на один и тот же исходный файл.

 <Directory Id="AppDir" Name="App">
    <Component Id='lib1_app.dll' Guid='*'>
      <File Id='lib1_app' Name='lib1.dll' Source='pathtolib1.dll' KeyPath='yes'>
    </Component>
</Directory>

<Directory Id="WebDir" Name="Web">
    <Component Id='lib1_web.dll' Guid='*'>
      <File Id='lib1_web' Name='lib1.dll' Source='pathtolib1.dll' KeyPath='yes'>
    </Component>
</Directory>