我正在考虑创建一个WiX软件包安装程序,它会为定义的链中包含的每个安装程序提供一个复选框,以允许用户选择要安装的软件包(类似于Visual Studio installer )。我通过扩展BootstrapperApplication
并覆盖Run方法开始创建自定义引导程序的路径,正如我在几篇博客文章中看到的那样。我在BootStrapperApplication
类中没有看到任何提供对链和包含的包的信息的访问。这些信息是否可通过API获取?
答案 0 :(得分:3)
有关捆绑包中包含哪些包和功能的信息实际上是通过在运行时丢弃在系统上的XML文件提供的。我有一系列博客文章,通过代码示例完成此过程。
这是一个(编辑过的)摘录,用于处理您的问题:
许多信息都嵌入在WiX xml文件中,例如包/功能布局,名称,描述,ID等,我们用它来构建我们的包模型,但几乎没有任何信息在运行时可用通过事件args。但是,WiX会生成一个BootstrapperApplicationData.xml文件,其中包含大量信息,并包含在运行时可用的文件中。我们可以在运行时解析该文件以访问该元数据,我建议您在运行检测逻辑之前执行该操作,以便在事件处理程序中使用填充的模型。由于该文件以及我们的所有程序集和.msi文件都放在一个随机名称的临时文件夹中,因此我们无法提前知道文件所在的位置,因此我们必须使用程序集的路径来查找它。
然后,您可以解析XML以获取元数据。我建议在调试模式下运行一个临时安装程序,并在此处设置断点以检查XML的内容,以获得可用内容的完整列表。
简介帖子在这里:https://www.wrightfully.com/2013/01/part-1-of-writing-your-own-net-based.html
获取捆绑包中包含的软件包和功能列表的详细信息:https://www.wrightfully.com/part-3-of-writing-your-own-net-based-installer-with-wix-context-data/
有关使用该数据以及用户选择或现有安装详细信息的详细信息,以设置安装,删除或升级的软件包/功能:https://www.wrightfully.com/2013/01/part-4-of-writing-your-own-net-based.html