在Wix安装结束后添加多个复选框

本文关键字:复选框 添加 Wix 安装 结束 | 更新日期: 2023-09-27 18:06:18

我已经为我的c#应用程序设置好了。在安装结束时,我添加了一个建议启动应用程序的复选框。效果很好。但是我无法添加第二个复选框,建议启动一个可选的安装程序。

这是我的代码:

<?xml version="1.0" encoding="UTF-8"?>
<?define compagny = "myCompagny"?>
<?define product = "myProduct"?>
<?define version = "!(bind.FileVersion.MyProject.exe)"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
  <Product Id="*"
           Name="$(var.product)"
           Language="1033"
           Version="$(var.version)"
           Manufacturer="$(var.compagny)"
           UpgradeCode="PUT-GUID-HERE">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine"/>
    <Icon Id="icone.ico" SourceFile="$(var.MyProject.ProjectDir)'Images'icone-VR.ico"/>
    <Property Id="ARPPRODUCTICON" Value="icon.ico"/>
    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed."/>
    <Media Id="1" Cabinet="MyProject.cab" EmbedCab="yes"/>
    <Feature Id="ProductFeature" Title="$(var.product)" Level="1">
      <ComponentGroupRef Id="ProductComponents"/>
      <ComponentRef Id ="ApplicationShortcut"/>
      <ComponentRef Id ="ApplicationShortcutDesk"/>
    </Feature>
    <WixVariable Id="WixUILicenseRtf"
                 Value="..'license.rtf"/>
    <WixVariable Id="WixUIBannerBmp"
                 Value=".'Resources'WixUIBannerBmp.bmp"/>
    <WixVariable Id="WixUIDialogBmp"
                 Value=".'Resources'WixUIDialogBmp.bmp"/>
    <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch $(var.product)" />
    <Property Id="WIXUI_EXITDIALOGOPTIONALTEXT" Value="Warning. If you don't have optionnal package, consider to install it."/>
    <Property Id="WixShellExecTarget" Value="[#MyProject.exe]" />
    <CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
    <UI>
      <UIRef Id="WixUI_Minimal"/>
      <Publish Dialog="ExitDialog"
               Control="Finish" 
               Event="DoAction" 
               Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
    </UI>
  </Product>
  [...]
 </Wix>

如何添加另一个CheckBox来启动./Resources.myOptionalPackage.exe ?

如果我不能添加另一个复选框,我可以添加一个用于安装该功能的新对话框页面吗?

在Wix安装结束后添加多个复选框

您必须使用自定义对话框创建自己的编辑UI。

1。首先进入GIT官方仓库并复制WixUI_Minimal.wxsExitDialog.wxs文件,或者复制整个仓库并在本地查找文件。为您的项目/解决方案创建此文件的副本,并将其重命名为WixUI_Custom.wxsMyExitDialog.wxs

也替换新文件的内容,对于WixUI_Minimal.wxs替换

<UI Id="WixUI_Minimal"> to <UI Id="WixUI_Custom">

for ExitDialog.wxs replace

<Dialog Id="ExitDialog" Width="370" Height="270" Title="!(loc.ExitDialog_Title)"> to <Dialog Id="MyExitDialog" Width="370" Height="270" Title="!(loc.ExitDialog_Title)">

和两者

<Show Dialog="ExitDialog" OnExit="success" Overridable="yes" /><Show Dialog="MyExitDialog" OnExit="success" Overridable="yes" />

2。将产品中的<UIRef Id="WixUI_Minimal"/>更改为<UIRef Id="WixUI_Custom"/>

3。现在您的安装程序应该像以前一样打开UI,但是从您的类

4。打开WixUI_Custom并更改

<Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999"><Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">

UI将打开我们的新对话框。

5。打开MyExitDialog.wxs并添加新的Control块,因为它已经存在

<Control Id="OptionalCheckBox" Type="CheckBox" X="135" Y="190" Width="220" Height="40" Hidden="yes" Property="WIXUI_EXITDIALOGOPTIONALCHECKBOX" CheckBoxValue="1" Text="[WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT]">
  <Condition Action="show">
    WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT AND NOT Installed
  </Condition>
</Control>

将标识符Id更改为任意值,X, Y表示对话框中的新位置,Property表示新属性,其中将存储复选框值,Text表示新属性,其中将存储显示文本。将文本属性也放置到条件中,因此显示将取决于文本属性设置,就像在现有的复选框中一样。

<Control Id="SecondCheckBox" Type="CheckBox" X="135" Y="220" Width="220" Height="40" Hidden="yes" Property="WIXUI_SECONDCHECKBOXVALUE" CheckBoxValue="1" Text="[WIXUI_EXITDIALOGSECONDCHECKBOXTEXT]">
  <Condition Action="show">
    WIXUI_EXITDIALOGSECONDCHECKBOXTEXT AND NOT Installed
  </Condition>
</Control>

6。现在你可以对新的复选框做同样的事情,就像使用在新控件中定义的新属性一样。