У меня есть Burn Bundle со следующей переменной
<Variable Name="INSTALLFOLDER" Type="string "Value="[ProgramFilesFolder]" />
Со следующим свойством в модели основного представления моего проекта пользовательского интерфейса начальной загрузки
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");
}
}
}
В моем представлении WPF, текстовое поле которого привязано к свойству InstallDirectory, я вижу только "[ProgramFilesfolder]", но я надеялся увидеть что-то вроде "C:\Program Files"
Я хотел бы получить что-то вроде следующего, которое заполнит текстовое поле моего каталога установки папкой установки по умолчанию и даст пользователю возможность изменить его там.
<Variable Name='INSTALLFOLDER' Type='string' Value='[ProgramFilesFolder]$(var.AppName)' />
Я мог бы использовать Net Framework, чтобы получить папку с программными файлами для своего пользовательского интерфейса WPF, но, похоже, я смогу получить ее из пакета Wix. Также журнал Wix показывает, что я устанавливаю свойство INSTALLFOLDER из своего пользовательского интерфейса.
Мой загрузчик 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);
}
Я подумал, что мне может понадобиться прослушать какое-то событие в BootstrapperApplication, после чего я мог бы активировать свойство, измененное для свойства InstallDirectory, но пока не нашел ничего интересного.
Я просмотрел Руководство разработчика для версии 3.6, и, похоже, в нем не рассматривается именно эта проблема, хотя последние две главы посвящены проектам записи и WPF.