WiX Bootstrapper WPF自定义UI

时间:2016-02-01 10:48:54

标签: wix wixsharp

我从here读取并运行了示例。

有些问题:

  1. 如何在安装/卸载/删除过程中获取操作名称?
  2. 如何将变量和参数传递给嵌入式MSI?
  3. 是否可以通过WixSharp(WpfSetup示例)中的嵌入式MSI(产品版本,公司名称等)获取其他信息?
  4. 4.我如何从MSI文件INSTALLFOLDER,TARGETDIR和其他值中获取(设置)?

2 个答案:

答案 0 :(得分:2)

  1. 我不确定你能不能。 Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperApplication将告诉您它正在计划或执行的msi包,您也可以获取有关正在执行的安装操作的信息,检查在安装过程中由此引发的事件。
  2. 2

    在您的bootstapper WPF应用

    //ba is an instance of BootstrapperApplication
    this.ba.Engine.StringVariables["ServerInstallLoc"] = "YOUR DATA"
    

    <强> Bundle.wxs

    <!-- Install paths provided by the managed bootstrapper interface -->
    <Variable Name="ServerInstallLoc" bal:Overridable="yes" Type="string" Value=""></Variable>
    

    后来引用这个变量

    <MsiPackage Id="MyInstaller" SourceFile="$(var.MyInstallerMsiProjectName.TargetPath)" Compressed="yes" DisplayInternalUI="no">
        <!-- Pass wix bundle variable to MSI property -->
        <MsiProperty Name="SERVER_INSTALL_OVERRIDE" Value="[ServerInstallLoc]"/>
      </MsiPackage>
    
    1. 在引导程序中,您可以引用捆绑安装程序的属性。语法为:!(bind.packageVersion.PackageName)假设您的<MsiPackage>个元素之一被称为 PackageName Binder variables reference

答案 1 :(得分:0)

问题4请看这个: http://www.wrightfully.com/allowing-the-user-to-select-the-install-folder/

您也可以查看Wix托管引导程序,因为我相信它也可以。您可以在此处下载源代码: https://github.com/wixtoolset/wix3