Установка и регистрация расширения оболочки Контекстное меню из установщика wix
Я создал острое расширение оболочки для настройки контекстного меню в контекстном меню, используя.Net. Результатом проекта является.dll. Я пытаюсь установить и зарегистрировать его, используя инструмент диспетчера сервера, который существует с острыми инструментами оболочки, и он работал успешно. Теперь мне нужно установить и зарегистрировать это расширение оболочки из моего проекта wix, так как мне нужно, чтобы пользователь установил мое приложение и настроил его контекстное меню правой кнопкой мыши в окнах, настроенных после установки.
Мне нужны подробные шаги, так как я новичок в использовании установщика Wix.
1 ответ
Вот как вы можете зарегистрировать свое расширение из wix:
Сначала вам нужно определить (в области продукта) пользовательские действия для регистрации / отмены регистрации вашего расширения:
<Product>
<!-- ... -->
<CustomAction Id="InstallShell" FileKey="srm.exe" ExeCommand='install "[INSTALLFOLDER]\MyExtension.dll" -codebase' Execute="deferred" Return="check" Impersonate="no" />
<CustomAction Id="UninstallShell" FileKey="srm.exe" ExeCommand='uninstall "[INSTALLFOLDER]\MyExtension.dll"' Execute="deferred" Return="check" Impersonate="no" />
</Product>
Затем вам нужно настроить последовательность выполнения установки для запуска этих пользовательских действий:
<Product>
<!-- ... -->
<InstallExecuteSequence>
<Custom Action="InstallShell" After="InstallFiles">NOT Installed</Custom>
<Custom Action="UninstallShell" Before="RemoveFiles">(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>
</InstallExecuteSequence>
</Product>
"MyExtension.dll" - это идентификатор вашего dll-ресурса расширения в вашем проекте wix:
<Component Guid="*">
<File Id="MyExtension.dll" KeyPath="yes" Source="bin\$(var.Configuration)\MyExtension.dll" />
</Component>
То же самое для srm.exe:
<Component Guid="*">
<File Id="srm.exe" Source="packages\SharpShellTools.2.2.0.0\lib\srm.exe" KeyPath="yes" />
</Component>
Вам нужно получить srm.exe, связанный с версией Sharpshell, которую вы используете (я рекомендую вам использовать пакет nuget). Вы можете найти информацию об этом здесь: http://www.codeproject.com/Articles/653780/NET-Shell-Extensions-Deploying-SharpShell-Servers
Надеюсь, это поможет вам;)