如何在刻录引导程序应用程序中显示磁盘 space 不足消息?
How to display disk space not enough message in burn bootstrapper applications?
我用刻录引导程序编写了自己的安装程序 UI。它有一个 WPF 前端。我有一个包含 3 个 MSI 包的 EXE。因此,当我尝试将其安装到磁盘空间不足 space 时,如何在我的安装程序 UI 中显示错误消息对话框?如果有足够的磁盘space,是否有回调可以用来查找?请指教
我也在考虑这样做。
秘诀是阅读和解析BootstrapperApplicationData.xml。
然后,您可以使用 WixPackageProperties 元素中的 InstalledSize 属性。 link Getting Display Name from PackageID 向您展示了如何在运行时读取该文件。请注意,您必须将 InstalledSize 添加到相关结构中。
由您来检查磁盘 space 与这些数字的总和相比,并在安装之前将其标记给用户。
这是我的一些代码的 copy/paste:
using System.Collections.ObjectModel;
using System.Xml.Serialization;
public class PackageInfo
{
[XmlAttribute("Package")]
public string Id { get; set; }
[XmlAttribute("DisplayName")]
public string DisplayName { get; set; }
[XmlAttribute("Description")]
public string Description { get; set; }
[XmlAttribute("InstalledSize")]
public int InstalledSize { get; set; }
}
[XmlRoot("BootstrapperApplicationData", IsNullable = false, Namespace = "http://schemas.microsoft.com/wix/2010/BootstrapperApplicationData")]
public class BundleInfo
{
[XmlElement("WixPackageProperties")]
public Collection<PackageInfo> Packages { get; set; } = new Collection<PackageInfo>();
}
public static class BundleInfoLoader
{
private static readonly string bootstrapperApplicationData = "BootstrapperApplicationData.xml";
public static BundleInfo Load()
{
var bundleFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var path = Path.Combine(bundleFolder, bootstrapperApplicationData);
var xmlSerializer = new XmlSerializer(typeof(BundleInfo));
BundleInfo result;
using (var fileStream = new FileStream(path, FileMode.Open))
{
var xmlReader = XmlReader.Create(fileStream);
result = (BundleInfo)xmlSerializer.Deserialize(xmlReader);
}
return result;
}
}
我用刻录引导程序编写了自己的安装程序 UI。它有一个 WPF 前端。我有一个包含 3 个 MSI 包的 EXE。因此,当我尝试将其安装到磁盘空间不足 space 时,如何在我的安装程序 UI 中显示错误消息对话框?如果有足够的磁盘space,是否有回调可以用来查找?请指教
我也在考虑这样做。
秘诀是阅读和解析BootstrapperApplicationData.xml。 然后,您可以使用 WixPackageProperties 元素中的 InstalledSize 属性。 link Getting Display Name from PackageID 向您展示了如何在运行时读取该文件。请注意,您必须将 InstalledSize 添加到相关结构中。
由您来检查磁盘 space 与这些数字的总和相比,并在安装之前将其标记给用户。
这是我的一些代码的 copy/paste:
using System.Collections.ObjectModel;
using System.Xml.Serialization;
public class PackageInfo
{
[XmlAttribute("Package")]
public string Id { get; set; }
[XmlAttribute("DisplayName")]
public string DisplayName { get; set; }
[XmlAttribute("Description")]
public string Description { get; set; }
[XmlAttribute("InstalledSize")]
public int InstalledSize { get; set; }
}
[XmlRoot("BootstrapperApplicationData", IsNullable = false, Namespace = "http://schemas.microsoft.com/wix/2010/BootstrapperApplicationData")]
public class BundleInfo
{
[XmlElement("WixPackageProperties")]
public Collection<PackageInfo> Packages { get; set; } = new Collection<PackageInfo>();
}
public static class BundleInfoLoader
{
private static readonly string bootstrapperApplicationData = "BootstrapperApplicationData.xml";
public static BundleInfo Load()
{
var bundleFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var path = Path.Combine(bundleFolder, bootstrapperApplicationData);
var xmlSerializer = new XmlSerializer(typeof(BundleInfo));
BundleInfo result;
using (var fileStream = new FileStream(path, FileMode.Open))
{
var xmlReader = XmlReader.Create(fileStream);
result = (BundleInfo)xmlSerializer.Deserialize(xmlReader);
}
return result;
}
}