Как я могу установить значок для ассоциированного файла с помощью WiX?
Файл установки моего приложения создается с помощью WiX. В конфигурации WiX я связываю тип файла, который работает с приложением. Как связать значок с этим типом файла в конфигурации WiX?
3 ответа
Вот как я это сделал. Я объявил:
<Icon Id="Icon.exe" SourceFile="..\Installer\Graph.ico" />
до </Product>
и добавил его в качестве ссылки следующим образом:
<ProgId Id='myApp.exe' Description='Some description' Advertise='yes' Icon='Icon.exe'>
<Extension Id='xyz' ContentType='application/text'>
<Verb Id='open' Sequence='10' Command='Open' Argument='"%1"' />
</Extension>
</ProgId>
ОТ: http://www.tramontana.co.hu/wix/lesson1.php
Если ваше приложение обрабатывает свой собственный тип данных файла, вам необходимо зарегистрировать для него файловую ассоциацию. Поместите ProgId внутри вашего компонента. FileId должен ссылаться на атрибут Id элемента File, описывающего файл, предназначенный для обработки файлов этого расширения. Обратите внимание на восклицательный знак: он вернет короткий путь файла вместо длинного:
<ProgId Id='AcmeFoobar.xyzfile' Description='Acme Foobar data file'>
<Extension Id='xyz' ContentType='application/xyz'>
<Verb Id='open' Sequence='10' Command='Open' Target='[!FileId]' Argument='"%1"' />
</Extension>
</ProgId>
Чтобы назначить значок этому типу файла, вы должны сами указать соответствующие записи реестра в вашем компоненте:
<Registry Id='FooIcon1' Root='HKCR' Key='.xyz' Action='write'
Type='string' Value='AcmeFoobar.xyzfile' />
<Registry Id='FooIcon2' Root='HKCR' Key='AcmeFoobar.xyzfile' Action='write'
Type='string' Value='Acme Foobar data file' />
<Registry Id='FooIcon3' Root='HKCR' Key='AcmeFoobar.xyzfile\DefaultIcon' Action='write'
Type='string' Value='[INSTALLDIR]Foobar.exe,1' />
Я бы порекомендовал следовать моему посту о переполнении стека, расположенному здесь, для самого простого и элегантного способа встраивания иконок в ресурс без необходимости проекта C++ в управляемом приложении.NET.
Далее, вот правильный способ установить это через wix:
<Component Id="stackruFileRegistration" Guid="MY_GUID">
<RegistryKey Root="HKCR" Key=".stackru" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Value="stackru.Document" Type="string" KeyPath="yes" />
<RegistryValue Name="Content Type" Value="application/stackru" Type="string" />
<RegistryKey Key="ShellNew" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Name="NullFile" Value="" Type="string" />
<RegistryValue Name="Data" Value="Default new document Content.. NOTE: you must use a MutiStringValue nodes for multi-line content...." Type="string"/>
</RegistryKey>
</RegistryKey>
<RegistryKey Root="HKCR" Key="stackru.Document" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Value="stackru Document" Type="string" />
<RegistryKey Key="DefaultIcon" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Value="[INSTALLDIR]bin\stackru.lib.dll, 1" Type="string" />
</RegistryKey>
<RegistryKey Key="Shell" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryKey Key="openstackruwebsite" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Value="Open Stackru" Type="string" />
<RegistryKey Key="command" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Value=""[INSTALLDIR]stackru.exe" /openwebsite "%1"" Type="string" />
</RegistryKey>
</RegistryKey>
</RegistryKey>
</RegistryKey>
</Component>
В этом примере регистрируется значок по умолчанию для определенного расширения файла (.stackru), который находится в сборке, начиная с шага 1. В нем также показано, как создавать связанные с проводником Windows команды, вызываемые правой кнопкой мыши, а также добавляется элемент меню в новый раздел Windows Explorer. меню.
Спасибо
Блейк Немийский
Обратите внимание, что ответ Dracos не является достаточным для полной ассоциации значков и файлов.
Следующий код:
Вот как я это сделал. Я объявил:
<Icon Id="Icon.exe" SourceFile="..\Installer\Graph.ico" />
<ProgId Id='myApp.exe' Description='Some description' Advertise='yes' Icon='Icon.exe'>
<Extension Id='xyz' ContentType='application/text'>
<Verb Id='open' Sequence='10' Command='Open' Argument='"%1"' />
</Extension>
</ProgId>
Регистрирует связь файлов и иконок только для наборов, созданных приложением, которое установлено данным wix-проектом. Чтобы получить значок, который отображается в целом для всех диалогов, рабочего стола и т. Д. В окнах, вам также необходимо зарегистрировать свой значок для определенного типа файла (расширения) в regedit.