Файл установки моего приложения создается с использованием WiX. В конфигурации WiX я связываю тип файла, который работает с приложением. Как я могу связать значок с этим типом файла в конфигурации WiX?
Как я могу установить значок для связанного файла с помощью WiX?
Ответы (4)
ОТ: http://www.tramontana.co.hu/wix/lesson1.php#1.7
Если ваше приложение обрабатывает свой собственный тип файловых данных, вам потребуется зарегистрировать для него файловую ассоциацию. Поместите 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' />
Вот как я это сделал. Я заявил:
<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>
Я бы порекомендовал следовать моему сообщению о переполнении стека, расположенному здесь для самого простого и элегантного способа встраивания значков в ресурс без необходимости в проекте C++ в управляемом приложении .NET.
Далее, вот правильный способ установить это через wix:
<Component Id="stackoverflowFileRegistration" Guid="MY_GUID">
<RegistryKey Root="HKCR" Key=".stackoverflow" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Value="stackoverflow.Document" Type="string" KeyPath="yes" />
<RegistryValue Name="Content Type" Value="application/stackoverflow" 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="stackoverflow.Document" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Value="stackoverflow Document" Type="string" />
<RegistryKey Key="DefaultIcon" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Value="[INSTALLDIR]bin\stackoverflow.lib.dll, 1" Type="string" />
</RegistryKey>
<RegistryKey Key="Shell" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryKey Key="openstackoverflowwebsite" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Value="Open Stackoverflow" Type="string" />
<RegistryKey Key="command" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Value=""[INSTALLDIR]stackoverflow.exe" /openwebsite "%1"" Type="string" />
</RegistryKey>
</RegistryKey>
</RegistryKey>
</RegistryKey>
</Component>
В этом образце регистрируется значок по умолчанию для определенного расширения файла (.stackoverflow), расположенного в сборке из шага 1. Он также показывает, как создавать связанные с проводником Windows команды щелчка правой кнопкой мыши, а также добавляет элемент меню в новый подраздел проводника Windows. меню.
Спасибо
-Блейк Нимийски
Обратите внимание, что ответа 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-проектом. Чтобы получить значок, который отображается в целом для всех диалогов, рабочего стола и т. д. в Windows, вам также необходимо зарегистрировать значок для определенного типа файла (расширения) в regedit.