Установите DLL в GAC с WiX - PullRequest
       50

Установите DLL в GAC с WiX

0 голосов
/ 08 апреля 2019

Мне нужно установить корпоративную библиотеку Microsoft Practices в GAC на рабочем сервере.Я читал бесконечные статьи, в которых говорится, что способ сделать это - создать MSI с WIX, но я не могу понять, как это делается.Есть ли способ создать простое приложение, которое ссылается на корпоративную библиотеку и устанавливает ее в gac?Больше ничего не нужно устанавливать.

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

IsWiX устанавливает GlobalParams.dll в GAC.Вы можете найти исходный код здесь:

https://github.com/iswix-llc/iswix/blob/master/Installer/IsWiXNewAddInMM/IsWiXNewAddInMMcustom.wxs

 <DirectoryRef Id="TARGETDIR">
      <Directory Id="GlobalAssemblyCache" Name="GlobalAssemblyCache">
        <Component Id="globalparams" Guid="{B07FF430-AAB4-49E6-8035-60142942F325}" Permanent="yes">
          <File Id="globalparams" Source="..\Deploy\IsWiXNewAddIn\GlobalParams.dll" KeyPath="yes" Assembly=".net"/>
        </Component>
      </Directory>
    </DirectoryRef>

Насколько я помню, идентификатор каталога на самом деле не имеет значения.Установщик Windows не использует их с точки зрения GAC.Хитрость в том, что 1) DLL должна иметь строгое имя. 2) Атрибут Assembly = ". Net" будет заполнять правильные таблицы MSIAssembly, чтобы MSI использовала действие MsiPublishAssemblies для взаимодействия с fusion и регистрировала сборки в правильном GAC.

0 голосов
/ 09 апреля 2019

Если бы я только знал библиотеку ... Позвольте мне записать несколько быстрых вариантов в дополнение к Ответ Криса Пейнтера :


NuGet : Похоже, здесь есть пакет NuGet?

Dark.exe : Вы также можете использовать инструментарий WiX и его двоичный файл dark.exe, чтобы декомпилировать существующий MSI, а затем настроить его и скомпилировать новый MSI. Требуемая очистка разметки WiX не тривиальна, но возможна. Обученный упаковщик наверняка сможет это сделать. Советы по быстрому запуску WiX .

GAC : для установки в GAC требуется строгое имя для сборки (подпись), о которой идет речь ( больше для сильных имен ), а затем вы просто устанавливаете атрибут Assembly на ".net", как объяснил Painter в своем ответе:

  • WiX Documentation: File Element (обратите внимание, как атрибут AssemblyApplication должен быть не установлен).
  • Фактическая разметка:
    <File Source="MyFile.dll" KeyPath="yes" Assembly=".net" />

Некоторые ссылки : Возможно, ознакомьтесь с этими ссылками.

...