Флажок "Создать ярлык"

Я использую WiX Tool для создания установщика.

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

Что-то вроде: [   ] Вы хотите создать ярлык меню "Пуск"?

Возможно ли это?

Ответ 1

Да, это определенно возможно. Общая идея заключается в том, чтобы компонент ярлыка был обусловлен свойством, а затем настроил ваш пользовательский интерфейс, чтобы связать флажок с этим свойством.

Все это описано (хотя и не для вашего конкретного примера) в Wix Tutorial, проницательном чтении. Но вот несколько примеров кода для вашего случая:

Добавить свойство

Создайте свойство, к которому вы можете подключить флажок. В файле .wxs добавьте Property, чтобы сохранить значение.

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product ...>
    <Property Id="INSTALLSHORTCUT" />
  </Product>
</Wix>

Добавить условие

Добавьте Condition к компоненту, который устанавливает ярлык, поэтому он зависит от значения вашего нового свойства INSTALLSHORTCUT.

<Component Id="ProgramFilesShortcut" Guid="*">
  <Condition>INSTALLSHORTCUT</Condition>
  <Shortcut Id="ProductShortcut" ... />
</Component>

Добавить флажок

Вам нужно настроить диалог, чтобы добавить флажок в пользовательский интерфейс и подключить его к свойству INSTALLSHORTCUT. Здесь я не буду вдаваться в подробности, но здесь есть хороший учебник: Пересмотренный интерфейс пользователя

Вам нужно загрузить исходное дерево wix, чтобы получить файлы .wxs для пользовательского интерфейса, который вы используете. Чтобы добавить флажок в диалоговом окне InstallDir в пользовательском интерфейсе WixUI_InstallDir, например, вы загрузите WixUI_InstallDir.wxs и InstallDirDlg.wxs. Добавьте их в проект Wix и переименуйте их (например, Custom_InstallDir.wxs и Custom_InstallDirDlg.wxs).

Измените Custom_InstallDirDlg.wxs, чтобы добавить свой флажок. Дайте <Dialog> новый Id тоже:

<Wix ...>
  <Fragment>
    <UI>
      <Dialog Id="InstallDirAndOptionalShortcutDlg" ...>
        <Control Id="InstallShortcutCheckbox" Type="CheckBox" 
                 X="20" Y="140" Width="200" Height="17" 
                 Property="INSTALLSHORTCUT" CheckBoxValue="1" 
                 Text="Do you want to create a start menu shortcut?" />
       </Dialog>
     </UI>
   </Fragment>
 </Wix>

Измените Custom_InstallDir.wxs, чтобы использовать настраиваемый диалог InstallDirAndOptionalShortcut:

<Wix ...>
  <Fragment>
    <UI Id="Custom_InstallDir">

      ** Search & Replace all "InstallDirDlg" with "InstallDirAndOptionalShortcut" **

    </UI>
  </Fragment>
</Wix>

Наконец, укажите свой пользовательский интерфейс в основном файле .wxs:

<Wix ...>
  ...
  <UIRef Id="Custom_InstallDir" />
  ...
</Wix>

Ответ 2

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