WiX Bootstrapper WPF自定义UI:更改INSTALLFOLDER?

时间:2016-02-01 17:37:47

标签: c# wix bootstrapper

我有一个带WPF自定义UI的Bootstrapper。它包含.NET Framework 4.5包和我的产品msi包。 我想在我的UI中提供文件夹选择对话框,然后用用户选择的默认安装文件夹替换。 为此,我需要从msi中读取值,显示对话框然后替换。

如何在WPF UI中执行此操作? 这样我就无法获得价值:

 if (engine.StringVariables.Contains("INSTALLFOLDER"))
                    installdir2 = engine.StringVariables["INSTALLFOLDER"];

有可能吗?

1 个答案:

答案 0 :(得分:1)

无法直接从msi读取安装文件夹(我的意思是相对容易),但您可以执行以下操作:

  1. 在Bundle.wxs中,将MsiProperty添加到包声明:

    <MsiPackage  Id="Installer"  Compressed="yes" Vital="yes" ForcePerMachine="yes" SourceFile="..\Installer\bin\$(var.Configuration)\Installer.msi">
                <MsiProperty Name='INSTALLFOLDER' Value='[InstallFolder]' />
    

  2. 其中INSTALLFOLDER - Wix安装程序中的变量,InstallFolder - 引擎变量名。

    1. 在安装程序中,在安装时将您的INSTALLFOLDER属性存储在注册表中(或者在更新/修复/等时可以轻松获取它)

    2. 在bootstrapper中,设置InstallFolder属性的默认值。

    3. 申请前,请致电Engine.StringVariables["InstallFolder"]=your_value
    4. 你已经完成了