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

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

введите описание изображения здесь

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

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

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

0

Решение

Я думаю, что нашел ответ от этот а также этот статьи.

Скажи, если бы я делал «Текст 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>
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]