【发布时间】:2017-03-21 02:11:25
【问题描述】:
我在 WPF 中为我的 Wix Bundle 创建了一个自定义 UI,并覆盖了 Bootstrapper 应用程序类,我正在努力处理一个变量,如果需要,我需要从 UI 访问和修改该变量。此变量是引导程序部署的 msi 的安装文件夹路径(字符串)。
我关注了我在许多论坛上找到的内容,但它不起作用,我无法访问此变量。这是我的代码:
Msi 安装程序:
<Product ...>
<Feature ...
ConfigurableDirectory="INSTALLFOLDER"
...>
</Product>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="ManufacturerFolder" Name="...">
<Directory Id="INSTALLFOLDER" Name="!(bind.property.ProductName)"/>
</Directory>
</Directory>
</Directory>
捆绑:
<Variable Name="InstallFolder" bal:Overridable="yes" />
<Chain>
<MsiPackage ...
ForcePerMachine="yes"
Compressed="no"
Visible="no"
EnableFeatureSelection="yes"
Vital="yes">
<MsiProperty Name="INSTALLFOLDER" Value="[InstallFolder]" />
</MsiPackage>
...
</Chain>
C# 托管引导程序应用程序:
if (Bootstrapper.Engine.StringVariables.Contains("InstallFolder"))
installFolder = Bootstrapper.Engine.StringVariables["InstallFolder"];
“installFolder”变量始终为空...我真的不知道我的代码有什么问题。希望可以有人帮帮我。谢谢
编辑:
我按照 Pavel 的建议将 bundle 变量更改为默认值 值,现在即使我仍然无法获得 MSI 返回的值,我 可以将 Bootstrapper.Engine.StringVariables["InstallFolder"] 设置为 值并正确传递给 msi。
【问题讨论】:
标签: c# wpf wix windows-installer