Установка и регистрация расширения оболочки Контекстное меню из установщика 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

Надеюсь, это поможет вам;)

Другие вопросы по тегам