我想创建一个在链中运行多个安装程序的安装程序套件 . 主套件应使用配置文件,以便安装程序根据此配置XML决定运行哪些版本的MSI . 目标是避免在新版软件问世时更新任何WiX或Bootstrapper项目 . 相反,只需更新配置XML即可更改链中安装的内容 .
例如,只需更新XML中特定MSI的源路径,以便主安装程序将读取此新路径并运行新MSI而不是旧路径 .
据我所知,Bootstrapper项目中的问题是所有软件包都是硬编码的,因此它不能为软件包的源路径提供灵活性 .
我也尝试在个人MSI中使用自定义操作 . 看起来很有希望我可以在读取XML后使用C#获取和设置MSI的属性,但是这些属性不能用作源路径的变量 .
我还尝试在第一个MSI中使用自定义操作运行第二个MSI . 遗憾的是,这没有成功 .
我很感激任何建议!
tldr ,I 'd like to run installers which were not originally included in the build. Similarly to ' DownloadUrl ', but from a local network. Its value could be altered using properties, so there' d无需在每次路径更改时重建项目 .
1 回答
我认为使用单个XML文件来控制安装哪些软件包会很困难 . 在刻录脚本中,设置变量的选项仅限于:
<FileSearch>
<RegistrySearch>
<DirectorySearch>
<ComponentSearch>
<ProductSearch>
其中只有
<FileSearch>
和<DirectorySearch>
可以探测源位置 .您可以使用文件的存在/不存在来控制MSI包的安装 . 在刻录项目中,使用util:FileSearch元素从源路径中查找文件:
这应该将变量InstallMSI01设置为"true"或"false",具体取决于源路径中是否存在文件 InstallMSI01.txt . 然后,您可以在MSIPackage中的安装条件中使用该变量: