WIX: Как зарегистрировать приложение для протокола URL? - PullRequest
8 голосов
/ 29 ноября 2011

В WiX вы можете легко регистрировать типы файлов:

<ProgId Id="MyApp.File" Description="MyApp File" Icon="MyAppEXE" IconIndex="0">
  <Extension Id="ext" ContentType="application/x-myapp-file">
    <Verb Id="open" Command="&amp;Open" TargetFile="MyAppEXE" Argument="&quot;%1&quot;"/>
  </Extension>
</ProgId>

Что если я хочу зарегистрировать протокол URL , как указано здесь ? Очевидно, он не имеет расширения, так куда бы я поместил тег Verb? Или я должен использовать другой подход?

Спасибо.

Ответы [ 2 ]

11 голосов
/ 22 июля 2014

Просто добавьте код ответа @Яна Скляренко:

<Component Id="ProductComponent" Guid="{206C911C-56EF-44B8-9257-5FD214427965}">
           <File Source="$(var.MyMainProgram.TargetPath)" />
           <RegistryKey Root="HKCR"
                 Key="protocolname"
                 Action="createAndRemoveOnUninstall">
             <RegistryValue Type="string" Name="URL Protocol" Value=""/>
             <RegistryValue Type="string" Value="URL:name of the protocol"/>
             <RegistryKey Key="DefaultIcon">
               <RegistryValue Type="string" Value="MyMainProgram.exe" />
             </RegistryKey>
             <RegistryKey Key="shell\open\command">
               <RegistryValue Type="string" Value="&quot;[INSTALLFOLDER]MyMainProgram.exe&quot; &quot;%1&quot;" />
             </RegistryKey>
           </RegistryKey>
         </Component>
  • MyMainProgram - это ссылка на мой основной проект в проекте установки wix
  • protocolname - это имя протокола, используемого в URL: protocolname://
  • name of the protocol является формальным названием протокола
3 голосов
/ 29 ноября 2011

Я сомневаюсь, что в WiX есть готовая функция для этого (вероятно, в 3.6?), Но, насколько я могу судить по предоставленной вами ссылке, процесс регистрации протокола URL добавляеткуча записей в системном реестре.Следовательно, вы можете добавить элементы RegistryKey / RegistryValue вручную, чтобы эмулировать это.

...