在托管引导程序(wpf)中更改属性(msi)?

时间:2014-12-04 09:39:40

标签: c# wix bootstrapper

有一个WPF设置应用程序。我有TextBox绑定到我的ViewModel中的属性ProductCode

如何在.msi项目中将包设置为“DEF”属性?

我的代码:

WPF:

 private void InstallExecute()
        {
            InstallEnabled = false;
            Bootstrapper.Engine.StringVariables["ABC"] = "zyx";
            MainWindowViewModel.PlanAction(LaunchAction.Install);
        }

Bootstrapper:

<Variable Name="ABC" bal:Overridable="yes" />

<MsiProperty Name="DEF" Value="[ABC]"/>

.MSI:

 <Property Id="DEF" />

项目与行动:

var test = session["DEF"].ToString(); //always gives empty string

1 个答案:

答案 0 :(得分:1)

您需要在捆绑包中指定这样的MsiProperty:

<MsiPackage Id='MyApp' Description='My Application' SourceFile="$(var.SetupMyApp.TargetPath)">
  <MsiProperty Name="INSTALLFOLDER" Value="[MyAppInstallLocation]"/>
</MsiPackage>

为它添加一个刻录变量,也在捆绑中:

<Variable bal:Overridable="yes" Name="MyAppInstallLocation" Value=""/>

然后

Bootstrapper.Engine.StringVariables["MyAppInstallLocation"] = "C:\MyApp";

你的引导程序中的某个地方,显然是在你开始安装之前。