更新(2012-02-14):我发现在CustomActions中安装*序列之前无法读取环境变量。这意味着您无法读取变量并在UI中显示它,除非您编写一个返回变量内容的exe / dll ... :(
我创建了两个属性来读取两个用户定义的环境变量%MY_ENV_VAR1%和%MY_ENV_VAR2%。定义如下:
<Property Id="ENV_MYENVVAR1" Value="0"/>
<Property Id="ENV_MYENVVAR2" Value="0"/>
之后,我在WelcomeDlg:
之后创建了两个在UI序列中执行的自定义操作<CustomAction Id="GET_MYENVVAR1" Impersonate="yes" Return="check" Execute="immediate" Property="ENV_MYENVVAR1" Value="[%MY_ENV_VAR1]"/>
<CustomAction Id="GET_MYENVVAR2" Impersonate="yes" Return="check" Execute="immediate" Property="ENV_MYENVVAR2" Value="[%MY_ENV_VAR2]"/>
<InstallUISequence>
<Custom Action="GET_MYENVVAR1" After="WelcomeDlg">1</Custom>
<Custom Action="GET_MYENVVAR2" After="GET_MYENVVAR1">1</Custom>
</InstallUISequence>
我面临的问题是,在定义的自定义操作中未读取环境变量。我的UI始终在相应的文本字段中显示“0”。这是我使用的两个控件的代码:
<Control Id="Control_EnvVar1" Property="ENV_MYENVVAR1" Type="Edit" X="35" Y="191" Width="240" Height="17"/>
<Control Id="Control_EnvVar2" Property="ENV_MYENVVAR2" Type="Edit" X="35" Y="106" Width="240" Height="17"/>
我使用WiX 3.5.2519.0和MSI 2.0作为我的安装程序的基础。安装程序在Win 7(x64)Professional包含下运行。 SP1,.NET也安装了从2.0到4.0的Frameworks版本,Windows Installer版本为5.0。
任何帮助都会非常感激。谢谢! -moik