是否可以从外部XML文件中包含WIX自定义操作



我有一个WIX安装程序,它使用WXS文件中定义的自定义操作作为安装过程的一部分,将设置值添加到注册表中。

我试图通过使用C#应用程序生成用于定义自定义操作的XML,将生成的XML保存到多个XML文件中,然后使用以下语法在WXS文件中引用这些XML文件,来自动将新设置添加到已安装的中

<!DOCTYPE Wix [ 
<!ENTITY externalCustomActionList SYSTEM "customActionList.xml">
<!ENTITY ExternalPropertyList SYSTEM "customActionPropertyList.xml">
]>

通过反复试验,我发现Visual Studio会在外部XML文件中发现错误,并且无法正确编译,所以我知道当我编译并构建安装程序时,XML本身是可以的。

问题是在运行安装程序时,外部XML文件中的自定义操作无法执行。

如果我将生成的XML直接粘贴到WXS文件中,则安装程序将正确运行,并且正如我所期望的那样。

是否可以通过这种方式使用外部文件中的XML块来构建WIX自定义Actions WXS文件?

我想以这种方式建立自定义操作的原因是为了避免在.中添加新设置时不得不用我的小C#应用程序更改主WIX文件

我一直在进一步研究这一点,并能够通过给每个片段一个伪Property并使用Product.wxs文件中的PropertyRef标记来包含其他文件中的WIX XML片段。

我的附加文件顶部如下:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<Property Id="CustomActionsList" Value="1" />

我添加的任何XML都会进入Fragment defined中,当Property在Product.wxs中被引用时,Fragment就会包含在WiX安装程序中,如下所示:

<PropertyRef Id="CustomActionsList"/>

这给了我想要的效果,可以将自动生成的XML拉入我的WIX安装程序。

我也能够以相同的方式添加组件,但使用PropertyPropertyRefComponentComponentRef集成

最新更新