创建快捷方式复选框

17

我正在使用WiX工具创建安装程序。

我需要使安装程序能够选择是否在创建开始菜单和桌面快捷方式时加入选项。

类似这样:[   ] 您是否要创建一个开始菜单快捷方式?

这种操作可行吗?

2个回答

27

是的,这绝对是可能的。总体思路是将快捷方式组件设置为基于某一属性的条件语句,然后自定义你的UI界面来将复选框与该属性连接起来。

所有这些都在Wix教程中有描述(虽然不是针对您的具体示例),这是一个有启发性的阅读。但以下是适用于您情况的更具体的代码示例:

添加属性

创建一个属性,您可以将复选框与其连接起来。在您的.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>

添加复选框

您需要自定义对话框以向UI添加复选框,并将其连接到INSTALLSHORTCUT属性。我不会在这里详细介绍所有细节,但是这里有一个很好的教程:用户界面回顾

您需要下载Wix源代码树以获取您正在使用的UI的.wxs文件。例如,要将复选框添加到WixUI_InstallDir UI中的InstallDir对话框中,您需要下载WixUI_InstallDir.wxsInstallDirDlg.wxs。将它们添加到您的Wix项目并重命名它们(例如,Custom_InstallDir.wxsCustom_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 文件中引用你自定义的 UI:

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

2
<Property Id="INSTALLSHORTCUT" Secure="yes"/>。只有将Secure设置为yes,才能通过条件访问此属性。 - Felix Castor
1
回答不错,但有点不完整。为了使其运行,我还必须在组件片段中执行以下操作:**(1)** 在<Component>中添加一个Directory属性,例如<Component ... Directory="APPLICATIONDIR"> (2) <ShortCut>需要这些属性:<Shortcut ... Advertise="no" Target="[#MyApp.exe]" />(注意:它是“Target”中的文件ID)(3)向组件添加一个虚拟注册表项,例如<RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="desktop icon = 1" KeyPath="yes" />以避免WiX错误。 (4)请参见Felix的评论。 - Beauty

-5

在复选框单击事件或下一个按钮单击事件中,您可以调用自定义操作来创建快捷方式。


我正在尝试使用复选框让用户选择是否安装文件。我按照这些步骤操作,但没有成功。在捕获复选框交互时是否有遗漏(例如发布命令或其他内容)? - tatmanblue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接