使用 Wix 安装结束时添加多个复选框
Add more than one checkbox when install with Wix is over
我有一个 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
?
如果我不能添加另一个复选框,我可以添加一个用于安装该功能的新对话框页面吗?
您必须使用自定义对话框创建自己编辑的 UI。
1.First 转到官方 GIT repository 并复制文件 WixUI_Minimal.wxs
和 ExitDialog.wxs
,或者复制整个存储库并在本地查找文件。为您创建此文件的副本 project/Solution 并将它们重命名为 WixUI_Custom.wxs
和 MyExitDialog.wxs
等。
也替换新文件的内容,因为WixUI_Minimal.wxs
替换
<UI Id="WixUI_Minimal">
至 <UI Id="WixUI_Custom">
、
用于 ExitDialog.wxs
替换
<Dialog Id="ExitDialog" Width="370" Height="270" Title="!(loc.ExitDialog_Title)">
到 <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.Change <UIRef Id="WixUI_Minimal"/>
在您的产品中 <UIRef Id="WixUI_Custom"/>
3.Now 您的安装程序应该像以前一样以 UI 打开,但是从您的 类
4.Open 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.Open MyExitDialog.wxs
并添加新的控制块,因为它已经存在
<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.Now 您可以使用新的 Checkbox 执行与现有的使用新控件中定义的新属性相同的操作。
我有一个 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
?
如果我不能添加另一个复选框,我可以添加一个用于安装该功能的新对话框页面吗?
您必须使用自定义对话框创建自己编辑的 UI。
1.First 转到官方 GIT repository 并复制文件 WixUI_Minimal.wxs
和 ExitDialog.wxs
,或者复制整个存储库并在本地查找文件。为您创建此文件的副本 project/Solution 并将它们重命名为 WixUI_Custom.wxs
和 MyExitDialog.wxs
等。
也替换新文件的内容,因为WixUI_Minimal.wxs
替换
<UI Id="WixUI_Minimal">
至 <UI Id="WixUI_Custom">
、
用于 ExitDialog.wxs
替换
<Dialog Id="ExitDialog" Width="370" Height="270" Title="!(loc.ExitDialog_Title)">
到 <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.Change <UIRef Id="WixUI_Minimal"/>
在您的产品中 <UIRef Id="WixUI_Custom"/>
3.Now 您的安装程序应该像以前一样以 UI 打开,但是从您的 类
4.Open 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.Open MyExitDialog.wxs
并添加新的控制块,因为它已经存在
<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.Now 您可以使用新的 Checkbox 执行与现有的使用新控件中定义的新属性相同的操作。