【发布时间】:2014-02-11 12:05:21
【问题描述】:
我有一个 WIX 安装程序,它使用 WXS 文件中定义的自定义操作作为安装过程的一部分,将设置值添加到注册表中。
我正在尝试通过生成用于使用 C# 应用程序定义自定义操作的 XML,将生成的 XML 保存到多个 XML 文件中,然后在WXS 文件使用以下语法
<!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 文件。
【问题讨论】:
-
编译的 WXS 文件中的声明在链接时没有任何效果,除非它们在 Product 或 Merge 元素中被引用。那么,你在粘贴什么?
-
我一直在做进一步的工作,并且能够通过为每个片段提供一个虚拟属性并使用 Product.wxs 文件中的 PropertyRef 标记来包含来自其他文件的 WIX XML 片段。这给了我能够将自动生成的 XML 拉入我的 WIX 安装程序的预期效果。