Как я могу установить значок для ассоциированного файла с помощью WiX? - PullRequest
7 голосов
/ 12 марта 2009

Файл установки моего приложения создается с использованием WiX. В конфигурации WiX я связываю тип файла, который работает с приложением. Как связать значок с этим типом файла в конфигурации WiX?

Ответы [ 3 ]

8 голосов
/ 12 марта 2009

ОТ: 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' />
7 голосов
/ 12 марта 2009

Вот как я это сделал. Я объявил:

<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>
0 голосов
/ 02 мая 2012

Я бы порекомендовал следить за моим сообщением о переполнении стека, расположенным здесь , для наиболее простого и элегантного способа встраивания иконок в ресурс без необходимости проекта 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="&quot;[INSTALLDIR]stackoverflow.exe&quot; /openwebsite &quot;%1&quot;" Type="string" />
          </RegistryKey>
        </RegistryKey>
      </RegistryKey>

    </RegistryKey>
  </Component>

В этом образце регистрируется значок по умолчанию для определенного расширения файла (.stackoverflow), который находится в сборке, начиная с шага 1. В нем также показано, как создавать связанные с Windows Explorer команды правой кнопки мыши, а также добавляется элемент меню в Windows. Explorer Новое подменю.

Спасибо

-Блейк Немийский

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...