Как к типам/расширениям регистрового файла с установщиком WiX?

Это другой способ:

end=5
for i in $(bash -c "echo {1..${end}}"); do echo $i; done
36
задан saschabeaumont 26 May 2009 в 07:17
поделиться

3 ответа

После некоторого дополнительного исследования я нашел частичный ответ на этот вопрос в Учебное руководство WiX. Это показывает рекламируемое решение и не работает с WiX 3.0, но, учитывая, что информация, я понял его. Добавьте элемент ProgId к компоненту, содержащему Ваш исполняемый файл, как следующее:

<ProgId Id="MyApplication.MyFile" Description="My file type">
  <Extension Id="myext" ContentType="application/whatever">
    <Verb Id="open" Command="open" TargetFile="MyApplication.exe" Argument="&quot;%1&quot;"/>
  </Extension>
</ProgId>

myext является расширением файла без точки, и MyApplication.exe является идентификатором файла (не, называют) исполняемого файла (т.е. идентификационный атрибут элемента Файла). Это зарегистрирует тип файла в Вашем исполняемом файле и предоставит значок по умолчанию (белая страница со значком приложения на нем), который достаточен для моих потребностей. Если Вы хотите определить специализированный значок, кажется, что все еще необходимо сделать это сами, как следующее (код из связанного учебного руководства):

<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' />

я не нашел хорошее решение для своего вопроса о премии все же.

Редактирование: Я начал писать это, прежде чем предыдущий ответ появился. Однако мое решение на самом деле работает, в отличие от предыдущего ответа.

12
ответ дан OregonGhost 27 November 2019 в 06:12
поделиться

"Если Ваше приложение обработает свой собственный тип данных файла, необходимо будет зарегистрировать ассоциацию файлов для него. Поместите ProgId в своем компоненте. FileId должен обратиться к идентификационному атрибуту элемента Файла, описывающего файл, предназначенный для обработки файлов этого расширения. Отметьте восклицательный знак: это возвратит короткий тракт файла вместо длинного":

<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>

Ссылка: https://www.firegiant.com/wix/tutorial/getting-started/beyond-files /

8
ответ дан casiosmu 27 November 2019 в 06:12
поделиться

К сожалению, нет способа сделать «безопасное» соединение с установщиком Windows.

Мы просто записываем все в реестр, а затем у нас есть отдельный компонент, который берет на себя общесистемные настройки по умолчанию и устанавливается только в том случае, если никакое другое приложение еще не зарегистрировалось как приложение по умолчанию.

В Vista есть новое " программы по умолчанию », опять же все записываешь в реестр. Вот полный пример, который мы используем в нашем установщике. (WiX 3.0)

Обновление: С момента моего первоначального ответа прошло 12 месяцев, и я лучше понимаю ассоциации файлов. Вместо того, чтобы писать все вручную, я теперь использую правильные определения ProgId , которые улучшают обработку рекламируемых пакетов. См. Обновленный код , отправленный в ответ на этот вопрос .

<Component ....>
    <RegistryValue Root="HKLM" Key="SOFTWARE\AcmeFoobar\Capabilities" Name="ApplicationDescription" Value="ACME Foobar XYZ Editor" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\AcmeFoobar\Capabilities" Name="ApplicationIcon" Value="[APPLICATIONFOLDER]AcmeFoobar.exe,0" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\AcmeFoobar\Capabilities" Name="ApplicationName" Value="ACME Foobar" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\AcmeFoobar\Capabilities\DefaultIcon" Value="[APPLICATIONFOLDER]AcmeFoobar.exe,1" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\AcmeFoobar\Capabilities\FileAssociations" Name=".xyz" Value="AcmeFoobar.Document" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\AcmeFoobar\Capabilities\MIMEAssociations" Name="application/xyz" Value="AcmeFoobar.Document" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\AcmeFoobar\Capabilities\shell\Open\command" Value="&quot;[APPLICATIONFOLDER]AcmeFoobar.exe&quot; &quot;%1&quot;" Type="string" />

    <RegistryValue Root="HKLM" Key="SOFTWARE\RegisteredApplications" Name="Acme Foobar" Value="SOFTWARE\AcmeFoobar\Capabilities" Type="string" />

    <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\.xyz" Name="Content Type" Value="application/xyz" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\.xyz\AcmeFoobar.Document\ShellNew" Value="" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\.xyz\OpenWithList\AcmeFoobar.exe" Value="" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\.xyz\OpenWithProgids" Name="AcmeFoobar.Document" Value="" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\Applications\AcmeFoobar.exe\SupportedTypes" Name=".xyz" Value="" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\Applications\AcmeFoobar.exe\shell\open" Name="FriendlyAppName" Value="ACME Foobar" Type="string" />

    <RegistryValue Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AcmeFoobar.exe" Value="[!AcmeFoobar.exe]" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AcmeFoobar.exe" Name="Path" Value="[APPLICATIONFOLDER]" Type="string" />

    <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\SystemFileAssociations\.xyz\shell\edit.AcmeFoobar.exe" Value="Edit with ACME Foobar" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\SystemFileAssociations\.xyz\shell\edit.AcmeFoobar.exe\command" Value="&quot;[APPLICATIONFOLDER]AcmeFoobar.exe&quot; &quot;%1&quot;" Type="string" />

</Component>



<Component ....>
    <ProgId Id="AcmeFoobar.Document" Description="ACME XYZ Document">
        <Extension Id="pdf" ContentType="application/xyz">
            <Verb Id="open" Command="Open" TargetFile="[APPLICATIONFOLDER]AcmeFoobar.exe" Argument="%1" />
        </Extension>
    </ProgId>

    <Condition><![CDATA[DEFAULTVIEWER=1]]></Condition>
</Component>
20
ответ дан 27 November 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: