Зарегистрируйте exe-сервер ole во время установки wix
<CustomAction Id="RegisterEXE"
Directory="INSTALLDIR"
ExeCommand=""[INSTALLDIR]MyApp.exe" /Register"
Execute="immediate"
Return="ignore"
/>
<InstallExecuteSequence>
<Custom Action='RegisterEXE' After='InstallFinalize' />
</InstallExecuteSequence>
Exe должен быть зарегистрирован как ole сервер. но это не регистрируется.
2 ответа
CustomAction
атрибут объявления Impersonate
имеет значение по умолчанию yes
, Вам нужно установить значение no, чтобы запускать исполняемый файл с повышенными правами (разрешение, которое есть у установщика сейчас). Регистрация OLE-сервера требует изменений в HKCU и HKLM.
Читать Wix Doc
<CustomAction Id="RegisterEXE"
Directory="INSTALLDIR"
ExeCommand=""[INSTALLDIR]TKW5.exe" /Register"
Execute="deferred"
Return="ignore"
Impersonate="no"
/>
<InstallExecuteSequence>
<Custom Action='RegisterEXE' After='InstallFiles' />
</InstallExecuteSequence>
В соответствии с рекомендациями установщика Windows:
Не используйте таблицы SelfReg и TypeLib.
• Авторам установочных пакетов настоятельно не рекомендуется использовать саморегистрацию и таблицу SelfReg. Вместо этого им следует регистрировать модули, создав одну или несколько таблиц в группе таблиц реестра. Многие преимущества установщика Windows теряются при самостоятельной регистрации, поскольку процедуры самостоятельной регистрации, как правило, скрывают важную информацию о конфигурации. Список причин, по которым следует избегать самостоятельной регистрации, приведен в таблице SelfReg.
• Авторам установочных пакетов настоятельно не рекомендуется использовать таблицу TypeLib. Вместо использования таблицы TypeLib зарегистрируйте библиотеки типов с помощью таблицы Registry. Если при установке с использованием таблицы TypeLib происходит сбой, и ее необходимо откатить, откат может не восстановить компьютер до того же состояния, которое существовало до отката.
Причина в том, что самостоятельная регистрация выполняется вне процесса, медленнее, склонна к сбоям и не отслеживается установщиком Windows. Это создает проблемы для сценариев устойчивости, отката, удаления и обновления. Лучший подход состоит в том, чтобы "собрать" метаданные COM из EXE-файла и создать его в MSI. Таким образом, MSI просто копирует файлы и применяет записи реестра. В случае отката MSI знает, что она сделала, и просто отменяет ее. Для получения дополнительной информации см.:
Причины отказа от самостоятельной регистрации
Способ достижения этого в WiX - запустить EXE через Harvest Tool (Heat). Это создаст фрагмент.WxS, который вы затем сможете включить в ваш установщик.