我正在开发一个安装程序,我必须为用户添加一个对话框以进行一些应用程序配置选择。该对话框在安装过程之前显示,配置选项只能在安装所需文件的安装后应用。所需文件是某种配置文件,必须根据所选配置进行调整。
序列如下:
配置对话框将包含两个组件:一个复选框和一个下拉列表。目前,我正在努力使用复选框并在延迟的自定义操作中读取它的值。安装完成后执行此自定义操作。
到目前为止,这是我的代码:
<Dialog Id="TempDlgId" ...>
<Control Id="MyCheckBoxId" Type="CheckBox" ... CheckBoxValue="0" Property="MyCheckBoxValue" Text="Sampe Text"/>
</Dialog>
这是用户选择配置的对话框。
<Custom Action="MyCustomAction.SetProperties" After="InstallFiles">NOT Installed</Custom>
<Custom Action="MyCustomAction" After="MyCustomAction.SetProperties">NOT Installed</Custom>
我为自定义操作应用了排序。
<CustomAction Id="MyCustomAction.SetProperties"
Return="check"
Execute="immediate"
Property="MyCustomAction"
Value="InstallLocation=[DEFAULTWORKINGDIRECTORY];MyCheckBoxValue=[MyCheckBoxValue]"/>
<CustomAction Id="MyCustomAction"
Return="check"
Execute="deferred"
BinaryKey="MyCustomAction.CA.dll"
Impersonate="yes"
DllEntry="MyCustomAction"
HideTarget="no"/>
以下是我对自定义操作的定义。
[STAThread]
[CustomAction]
public static ActionResult MyCustomAction(Session session)
{
Debugger.Launch();
var installLocation = session.CustomActionData["InstallLocation"];
var hasModule = session.CustomActionData["MyCheckBoxValue"];
return ActionResult.Success;
}
此代码必须更改已安装应用程序的配置,目前我正在努力获取复选框值。如果选中复选框并不重要,MyCheckBoxValue
始终为空。是否可以在延迟操作中获取复选框的值?如果可能,我需要做什么才能获得复选框值?
答案 0 :(得分:0)
由于我不熟悉安装程序,我不熟悉大写实际上具有使用WiX创建安装程序的功能这一事实。一旦我在大写字母中完整地写了MyCheckBoxValue
,它就变成了一个公共属性,我设法在延迟的自定义操作中获得它的价值。