Как добавить собственную ассоциацию файлов в контекстное меню «Открыть с помощью»?

0

Скажем, если я щелкнул правой кнопкой мыши файл, а затем перейдите в меню "Открыть с", он отобразит подменю, подобное этому:

Изображение 174551

Как я могу добавить свою собственную программу в список "Открыть с"?

PS. Обратите внимание, что в этом случае мне не нужно создавать связь с определенным расширением файла (чтобы пользователь обычно дважды щелкал, чтобы открыть.)

PS2. Мне технически нужно это сделать из установщика MSI (я использую WiX), но если кто-то может предложить API или реестр для настройки, я могу сделать это и из пользовательского действия, если MSI/WiX напрямую не поддерживает его.

  • 0
    Пожалуйста, перейдите по следующей ссылке: msdn.microsoft.com/en-us/library/cc144067%28VS.85%29.aspx
  • 1
    Попробуйте эту ссылку: msdn.microsoft.com/en-us/library/bb166549.aspx
Показать ещё 4 комментария
Теги:
wix
windows-installer
winapi

1 ответ

1

Думаю, я нашел ответ из этого и этих статей.

Скажем, если я создавал приложение "Text Zapper" и хотел связать его с файлами "Open With" .txt. Здесь псевдо-разметка для макета WiX (MSI). Он в основном определяет ключи реестра, которые необходимо установить. (Обратите внимание, что он не определяет стандартную ассоциацию расширения .txt для приложения.)

<?define ProgId = "Text.Zapper.1" ?>
<?define GuiAppExeName = "txtzpr.exe" ?>
<?define ProductThis = "Text Zapper" ?>
<?define AppDescr = "Wonderful Text Zapper Application" ?>


<Component Id='IdTextZapper' Guid='*'>
  <File Id='IdTextZapperExe' Name='$(var.GuiAppExeName)' DiskId='1' Source='$(var.Srctxtzpr)' KeyPath='yes' />

  <!-- Extend the "open with" Windows Explorer function -->
  <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\$(var.ProgId)" Value="$(var.ProductThis)" Type="string" />
  <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\Applications\$(var.GuiAppExeName)" Name="FriendlyAppName" Value="$(var.ProductThis)" Type="string" />
  <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\Applications\$(var.GuiAppExeName)\shell\open" Name="FriendlyAppName" Value="$(var.ProductThis)" Type="string" />
  <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\Applications\$(var.GuiAppExeName)\shell\open\command" Value='"[INSTALLDIR]$(var.GuiAppExeName)" "%1"' Type="string" />

  <RegistryValue Root="HKLM" Key="SOFTWARE\My Company\Text Zapper\Capabilities" Name="ApplicationDescription" Value="$(var.AppDescr)" Type="string" />
  <RegistryValue Root="HKLM" Key="SOFTWARE\RegisteredApplications" Name="$(var.ProductThis)" Value="SOFTWARE\My Company\Text Zapper\Capabilities" Type="string" />

  <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\.txt\OpenWithProgIDs" Name="$(var.ProgId)" Value="" Type="string" />
  <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\.txt\OpenWithList\$(var.GuiAppExeName)" Value="" Type="string" />
  <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\Applications\$(var.GuiAppExeName)\SupportedTypes" Name=".txt" Value="" Type="string" />
  <RegistryValue Root="HKLM" Key="SOFTWARE\My Company\Text Zapper\Capabilities\FileAssociations" Name=".txt" Value="$(var.ProgId)" Type="string" />

</Component>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню