.NET управлял dll настраиваемыми действиями в Installshield 2018 - PullRequest
0 голосов
/ 12 сентября 2018

Я использую Installshield 2018 Express Edition, чтобы выполнить мои настройки, и я хотел включить некоторые пользовательские действия, закодированные в .NET, но я не могу найти способ ссылаться на пользовательское действие в .NET. Я предполагаю, что Installshield будет иметь возможность ссылаться на сборку, класс и открытый метод, который будет вызываться для настраиваемого действия, но я не могу найти никакой опции, чтобы сделать это.

¿Есть ли способ добиться этого? Я бы предпочел использовать dll вместо exe и иметь дело с аргументами командной строки и т. Д.

1 Ответ

0 голосов
/ 13 сентября 2018

Express Edition : я не уверен, что Express Edition Installshield поддерживает настраиваемые действия или Installscript (язык сценариев настраиваемых действий)? Я не думаю, что это так . На самом деле, похоже, что нет, но у меня нет продукта перед собой.

Опции : я думаю, вам нужно либо 1) обновить до более поздней версии, 2) переключиться на другой продукт или 3) попробуйте самостоятельно «внедрить» (управляемую) DLL настраиваемого действия в скомпилированный MSI из Installshield Express.

WiX Votive : Это будет «наилучшее предположение», даже не пробовав его для производства. Если вы создадите проект настраиваемого действия управляемого кода с использованием Votive Feature WiX (расширение WiX Toolset Visual Studio), то проект будет скомпилирован с использованием подхода DTF для объединения управляемого кода в dll, который выглядит как родная DLL. Полученную в результате встроенную библиотеку DLL можно будет вставить или вставить в любой пакет MSI (требуется некоторая сантехника, много мелких хлопот, но это определенно не ракетостроение - вам это удастся, если вы захотите).

MakeSfxCA.exe : обратите внимание, что из проекта управляемого кода WiX созданы две библиотеки DLL. DLL управляемого кода, а затем дополнительный dll с CA добавляется в конец его идентичного имени. Последняя версия CA - это встроенная, встроенная DLL-библиотека, которую вам нужно использовать.

Вставить CA DLL : я провел быстрый тест и смог внедрить DLL, встроенную в WiX / DTF , в пакет, изготовленный другим продуктом , Вы просто вставляете DLL как обычное пользовательское действие DLL. Это включает в себя добавление DLL в двоичную таблицу (полезную нагрузку), а также в таблицу пользовательских действий (конфигурацию настраиваемого действия) и таблицы InstallExecuteSequence или InstallUISequence (или в обе - в зависимости от последовательности). Эти последние таблицы определяют последовательность настраиваемого действия (когда оно выполняется).

Orca, Direct Editor или CA View : если редакция Express позволяет определять настраиваемые действия, используйте этот подход и добавьте DLL таким образом. Если он поддерживает представление Direct Editor (представление таблиц), вы можете сделать это оттуда. Если нет, выведите Orca и сделайте это сами. Не ракетостроение, а множество мелких деталей, которые можно испортить, прежде чем привыкнуть к нему. Как вы понимаете, для меня здесь много неизвестного - просто совет, который поможет вам реально помочь себе. Надеюсь, я не сбиваю тебя с пути. Хотя это может быть сделано за несколько минут с опытом, оно может потратить впустую целый день, если вам придется делать «стиль бампер-бампер».

CA управляемого кода : Есть некоторые пугающие проблемы, связанные с настраиваемыми действиями управляемого кода, хотя мы достигаем стадии, когда на большинстве целевых компьютеров установлена ​​версия .NET. Я бы рекомендовал вместо этого родную C ++ DLL - если это вариант. Проблемы с управляемым кодом сосредоточены вокруг зависимостей времени выполнения (заблокированных, отсутствующих, неработающих во время выполнения), интерференции версий во время выполнения (какая версия .NET загружена), проблем с зависимостями GAC (вы не можете полагаться на сборки, устанавливаемые в GAC из-за смешанного Fusion / Модели фиксации MSI) и т. Д. WiX работал над внедрением передового опыта, поэтому я не уверен, насколько серьезными эти проблемы, если честно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...