如果自定义操作未引用,WiX 会删除仅包含 Error 元素的片段
我在一个相当大的项目中使用 WiX (3.0.3815.0)。 我想做一些代码生成,从某种源中生成错误元素(目的:C 编译的 CA 和 MSI 都需要查看错误字符串并了解 ID)。 我生成如下内容:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI>
<Error Id="28002"><![CDATA[bla bla bla]]></Error>
<Error Id="28003"><![CDATA[bli bli bli]]></Error>
(Lots more...)
</UI>
</Fragment>
</Wix>
在构建过程中,我像使用其他 .wxs 文件一样使用它:调用 Candle.exe 并获取 gen.wixobj,然后将其与其他 wixobj 一起传递给 light.exe。
问题:WiX 在生成的 MSI 错误表中不包含错误行(已使用 Orca 验证)。
丑陋的解决方法:添加一个带有 Error="28002" 的自定义操作 - 然后整个文件将包含在 MSI 中。
有人熟悉这个吗? 有什么不那么丑陋的解决方案吗?
I'm using WiX (3.0.3815.0) on a fairly large project. I want to do some code generation that will generate Error elements out of some kind of source (purpose: Both C-compiled CAs and MSI need to see the error strings and know about the IDs). I generate something like this:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI>
<Error Id="28002"><![CDATA[bla bla bla]]></Error>
<Error Id="28003"><![CDATA[bli bli bli]]></Error>
(Lots more...)
</UI>
</Fragment>
</Wix>
During build, I use it like I use my other .wxs files: call candle.exe and get gen.wixobj, and then pass it to light.exe together with my other wixobjs.
Problem: WiX doesn't include the Error lines in the resulting MSI error table (validated with Orca).
Ugly workaround:Add a custom action with Error="28002" - then the entire file gets included in the MSI.
Anybody familiar with this?
Any less-ugly solution?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
UIRef 元素就是为了这类事情而添加的。 添加 UI/@Id 属性,并在包含 CustomAction 定义的片段中添加具有匹配 @Id 的 UIRef 元素。
The UIRef element was added for just this sort of thing. Add an UI/@Id attribute and add a UIRef element with matching @Id in the fragment that includes your CustomAction definition.