2014-12-04 45 views
0

有一個WPF設置應用程序。我有TextBox綁定到我的ViewModel中的屬性ProductCode更改託管引導程序(wpf)中的屬性(msi)?

如何使包在.msi項目中設置爲「DEF」屬性?

我的代碼:

WPF:

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

引導程序:

<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

你需要指定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"; 

在啓動程序中的某處,顯然是在開始安裝之前。

相關問題