我有一个带有以下变量的Burn Bundle
<Variable Name="INSTALLFOLDER" Type="string "Value="[ProgramFilesFolder]" />
在我的bootstrapper UI项目的主视图模型中具有以下属性
public string InstallDirectory
{
get
{
if (_Engine.StringVariables.Contains("INSTALLFOLDER"))
return _Engine.StringVariables["INSTALLFOLDER"];
return string.Empty;
}
set
{
if (_Engine.StringVariables.Contains("INSTALLFOLDER"))
{
_Engine.StringVariables["INSTALLFOLDER"] = value;
OnPropertyChanged("InstallDirectory");
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的WPF视图中,它有一个绑定到InstallDirectory属性的文本框,我只看到"[ProgramFiles文件夹]",但我希望看到类似"C:\ Program Files"的内容
我想最终得到类似下面的内容,它将使用默认安装文件夹填充我的安装目录文本框,并为用户提供在那里更改它的选项.
Run Code Online (Sandbox Code Playgroud)<Variable Name='INSTALLFOLDER' Type='string' Value='[ProgramFilesFolder]$(var.AppName)' />
我可以使用Net Framework获取我的WPF UI的程序文件文件夹,但似乎我应该可以从Wix Bundle获取它.此外,Wix日志显示我正在从我的UI设置INSTALLFOLDER属性.
我的bootstrapper Run看起来像这样:
protected override void Run()
{
this.Engine.Log(LogLevel.Verbose, "Run has been called on the UI application.");
CurrentDispatcher = Dispatcher.CurrentDispatcher;
_MainWindow = new MainWindow(new MainWindowViewModel(this));
Engine.Detect();
_MainWindow.Show();
Dispatcher.Run();
Engine.Quit(0);
}
Run Code Online (Sandbox Code Playgroud)
我以为我可能需要在BootstrapperApplication上听一些事件,之后我可以触发针对InstallDirectory属性更改的属性但是还没有找到任何有趣的东西.
我已经阅读了3.6的开发人员指南书,虽然最后两章确实讨论了刻录项目和WPF,但它似乎没有解决这个问题.
在get方法中,您应该能够使用它来获取属性的实际值:
get
{
if (_Engine.StringVariables.Contains("INSTALLFOLDER"))
return _Engine.FormatString("[INSTALLFOLDER]");
return string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1258 次 |
| 最近记录: |