- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
通常在Bundle.wxs 文件中设置EXE 版本。是否可以在编写安装程序后端引擎逻辑的 Bootstrapper Application 项目中获取此版本?我使用 WPF 创建了一个自定义 UI。我需要在 UI 中显示版本。我怎样才能做到这一点?请指教。下面是我的 Bootstrapper 应用程序代码。
public class MainViewModel : ViewModelBase
{
private MINAClient minaClient;
//constructor
public MainViewModel(BootstrapperApplication bootstrapper)
{
this.IsThinking = false;
this.Bootstrapper = bootstrapper;
this.Bootstrapper.ApplyComplete += this.OnApplyComplete;
this.Bootstrapper.DetectPackageComplete += this.OnDetectPackageComplete;
this.Bootstrapper.PlanComplete += this.OnPlanComplete;
this.Bootstrapper.DetectComplete += this.DetectComplete;
this.Bootstrapper.CacheAcquireProgress += (sender, args) =>
{
this.cacheProgress = args.OverallPercentage;
this.Progress = (this.cacheProgress + this.executeProgress) / 2;
};
this.Bootstrapper.ExecuteProgress += (sender, args) =>
{
this.executeProgress = args.OverallPercentage;
this.Progress = (this.cacheProgress + this.executeProgress) / 2;
};
minaClient = new MINAClient();
minaClient.initConnection("127.0.0.1", 9123);
}
#region Properties
private bool installEnabled;
public bool InstallEnabled
{
get { return installEnabled; }
set
{
installEnabled = value;
RaisePropertyChanged("InstallEnabled");
}
}
private bool uninstallEnabled;
public bool UninstallEnabled
{
get { return uninstallEnabled; }
set
{
uninstallEnabled = value;
RaisePropertyChanged("UninstallEnabled");
}
}
private bool isThinking;
public bool IsThinking
{
get { return isThinking; }
set
{
isThinking = value;
RaisePropertyChanged("IsThinking");
}
}
private int progress;
public int Progress
{
get { return progress; }
set
{
this.progress = value;
minaClient.sendMessage(value);
RaisePropertyChanged("Progress");
}
}
private int cacheProgress;
private int executeProgress;
public BootstrapperApplication Bootstrapper { get; private set; }
#endregion //Properties
#region Methods
public void InstallExecute()
{
Bootstrapper.Engine.Log(LogLevel.Verbose, "See actually i've called install method");
IsThinking = true;
Bootstrapper.Engine.Plan(LaunchAction.Install);
}
public void UninstallExecute()
{
Bootstrapper.Engine.Log(LogLevel.Verbose, "See actually i've called un-install method");
IsThinking = true;
Bootstrapper.Engine.Plan(LaunchAction.Uninstall);
}
public void ExitExecute()
{
CustomBA.BootstrapperDispatcher.InvokeShutdown();
}
/// <summary>
/// Method that gets invoked when the Bootstrapper ApplyComplete event is fired.
/// This is called after a bundle installation has completed. Make sure we updated the view.
/// </summary>
private void OnApplyComplete(object sender, ApplyCompleteEventArgs e)
{
IsThinking = false;
InstallEnabled = false;
UninstallEnabled = false;
this.Progress = 100;
ExitExecute();
}
void DetectComplete(object sender, DetectCompleteEventArgs e)
{
Bootstrapper.Engine.Log(LogLevel.Verbose,"fired! but does that give you any clue?! idiot!");
if (LaunchAction.Uninstall == Bootstrapper.Command.Action)
{
Bootstrapper.Engine.Log(LogLevel.Verbose, "Invoking automatic plan for uninstall");
Bootstrapper.Engine.Plan(LaunchAction.Uninstall);
}
}
/// <summary>
/// Method that gets invoked when the Bootstrapper DetectPackageComplete event is fired.
/// Checks the PackageId and sets the installation scenario. The PackageId is the ID
/// specified in one of the package elements (msipackage, exepackage, msppackage,
/// msupackage) in the WiX bundle.
/// </summary>
private void OnDetectPackageComplete(object sender, DetectPackageCompleteEventArgs e)
{
if (e.PackageId == "UpdaterServiceInstallerId" || e.PackageId == "MosquittoInstallerId" || e.PackageId == "AppsInstallerId")
{
if (e.State == PackageState.Absent)
InstallEnabled = true;
else if (e.State == PackageState.Present)
UninstallEnabled = true;
}
}
/// <summary>
/// Method that gets invoked when the Bootstrapper PlanComplete event is fired.
/// If the planning was successful, it instructs the Bootstrapper Engine to
/// install the packages.
/// </summary>
private void OnPlanComplete(object sender, PlanCompleteEventArgs e)
{
if (e.Status >= 0)
Bootstrapper.Engine.Apply(System.IntPtr.Zero);
}
#endregion //Methods
#region RelayCommands
private RelayCommand installCommand;
public RelayCommand InstallCommand
{
get
{
if (installCommand == null)
installCommand = new RelayCommand(() => InstallExecute(), () => InstallEnabled == true);
return installCommand;
}
}
private RelayCommand uninstallCommand;
public RelayCommand UninstallCommand
{
get
{
if (uninstallCommand == null)
uninstallCommand = new RelayCommand(() => UninstallExecute(), () => UninstallEnabled == true);
return uninstallCommand;
}
}
private RelayCommand exitCommand;
public RelayCommand ExitCommand
{
get
{
if (exitCommand == null)
exitCommand = new RelayCommand(() => ExitExecute());
return exitCommand;
}
}
#endregion //RelayCommands
}
最佳答案
var bundleVersion = Bootstrapper.Engine.VersionVariables["WixBundleVersion"];
关于wpf - 使用 Burn Bootstrapper 项目获取应用程序版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38046804/
我有一个刻录安装,用户可以选择安装三个选项中的哪一个 - 每个选项都直接与链中的三个 MsiPackages 之一相关,例如: 一切都很好。但是,当我下次运行 msi 时,我只想
有没有办法跳过链中的一个包?我看过“InstallCondition”并有这样的代码。 但我不想在 InstallConditi
我想知道如何将复选框值存储在变量中?我正在使用带有自定义 RtfTheme 的 WiX Burn。 例如: RtfTheme.xml Please select this box Bundle.wxs
所以我有一个非常简单的刻录安装程序,主要包括 .net 升级,或者偶尔包括我们的应用程序需要与之通信的硬件的驱动程序包。 我们创建的 MSI 支持升级或降级。
我正在尝试为 WiX 创建自定义 UI和燃烧。我遵循了我发现的一些指南,到目前为止,我有一个项目具有以下内容,它继承自 BootstrapperApplication。 namespace MyBA
有没有办法在安装程序中更改那张红色的 CD 图片? 这是 Burn 项目的代码: 谢谢! 最佳答案 是的,您可以使用自定义
我正在开发一个 Burn Bootstrap 应用程序,其目的是安装许多 MSI 包。我想测试其中一个软件包安装失败的场景。有没有办法创建一个 MSI 包,当您尝试安装它时总是失败? 最佳答案 是的,
我正在使用 exePackage 属性下载一个 exe 包 - 实际上是来自微软的 VSTO 运行时。 它无法获取包。 我相信这是将其添加到 CHAIN 的正确方法 =v10.0.40303)
我有一个自定义的刻录 bootstrap 应用程序,本地化为德语 (BurnUI_de-DE.wxl) 和英语 (BURNUI_en-US.wxl)。目前刻录自动以英文启动。我不知道如何在运行时更改
我有一个 WiX Burn使用 ManagedBootstrapperApplicationHost 的自定义安装程序。安装必备 Microsoft Windows Installer 之一后4.5
我创建了一个 WIX Burn Bundle。在捆绑包中,我安装了 .Net 4(如果未安装),然后再安装 2 个 .msi 文件。 1 是第三部分 msi,另一个是我使用 WIX 为我的软件创建的
有可能以某种方式拆开捆包吗?我需要确保捆绑包中的所有软件包均已正确签名... TIA 最佳答案 Dark.exe反编译包;使用-x提取位。 关于wix - 打开WIX Burn bundle ,我们在
假设这样定义 #define myDate [NSDate date] 每次我使用它时,它都会给我当前日期,没关系。 我想要的是存储代码编译的日期。我可以使用定义或使用任何其他方式来做到这一点吗? 我
我有一个 UIImageView 我正在尝试为类似 Ken Burns 的平移/缩放设置动画。我想开始以脸部为中心(具体来说,比如说,人的 Nose 末端)并缩小到图像的完整尺寸。代码是这样的: im
我正在构建一个将用作信息监视器的非公开网络应用程序。因此,它将在一台液晶电视显示屏上全天候 24/7 运行。 因为这可能会在 LCD 上产生“烙印颜色”错误,所以我正在寻找可以防止/减少此问题的 Ja
通常在Bundle.wxs 文件中设置EXE 版本。是否可以在编写安装程序后端引擎逻辑的 Bootstrapper Application 项目中获取此版本?我使用 WPF 创建了一个自定义 UI。我
我有一个由供应商提供给我的第三方 MSI。然而,MSI 不是独立的,它需要多个支持文件(dll、配置文件、设备驱动程序...)才能完成安装。我尝试在 MSI 目录中不存在这些文件的情况下进行安装,并且
我已经使用 WiX/Burn 编写了一个自定义托管 Bootstrap 应用程序,现在我正在尝试扩展它以处理 ExecuteFilesInUse 事件。我已经成功触发了事件并完成了我所得到的转储,这让
我为我们的一款产品创建了一个 WIX msi,效果非常好。该产品是一个 Word 插件,在升级/卸载时,msi 会自动检查 Word 是否打开(即我的程序集当前被锁定在执行中),如果是,则会显示“正在
我是Wix Burn Bootstrapper的新手,请原谅我的无知。我有一个要求,我需要使用Burn Bootstrapper安装必备组件。 前提条件是setup.exe(第三方),它依赖于文件和文
我是一名优秀的程序员,十分优秀!