如何调试WiX安装程序

6
我正在为您的WiX安装程序添加构建,以包括基于自定义对话框选择的多网站部署。当我在调试模式下运行时,遇到了这个问题,不确定如何解决问题以找到问题所在,我收到了“加载XML文件失败”的错误消息:

MSI (s) (D0:60) [10:25:14:945]: 执行操作: ActionStart(Name=ExecXmlFile,,) Action 10:25:14: ExecXmlFile.

MSI (s) (D0:60) [10:25:14:960]: 执行操作: CustomActionSchedule(Action=ExecXmlFile,ActionType=3073,Source=BinaryData,Target=ExecXmlFile,CustomActionData=20C:\Program Files\Company Name, Inc\18.4.007\Navigator\bin\hibernate.cfg.xml30//property[@name='connection.connection_string_name']Workbench_PROD2130/ + 更多类似的内容

MSI (s) (D0:30) [10:25:14:976]: 调用远程自定义操作。 DLL: C:\Windows\Installer\MSI5E32.tmp, Entrypoint: ExecXmlFile

MSI (s) (D0:B0) [10:25:14:976]: 生成随机cookie。

MSI (s) (D0:B0) [10:25:14:976]: 创建PID为3980(0xF8C)的自定义操作服务器。

MSI (s) (D0:8C) [10:25:15:163]: 作为服务运行。

MSI (s) (D0:8C) [10:25:15:163]: 您好,我是您的32位提升自定义操作服务器。

ExecXmlFile: 错误0x8007006e:无法加载XML文件:


1
在引用路径中,xml文件是否存在? Inc\18.4.007\Navigator\bin\hibernate.cfg.xml - Cole W
是的,没错。我不太确定为什么在我的代码中进行这个更改就可以使它工作:我一直在阅读使用XmlConfig而不是XmlFile。 `code <util:XmlConfig Action="create" Id="SetWorkbenchNavEndpointProd" File="[#Navigator.Web.config]" On="install" Value="/[NAVIGATOR_ENDPOINT]" ElementPath="//frameEndpointConfig/frameEndpoints/add[\[]@name='Workbench_PROD'[\]]"/>` - user1964485
2个回答

1

由于您的错误发生在运行自定义操作时,我建议在自定义操作方法的开头添加C#的Debugger.Launch();或其他语言的等效项。这将允许您像往常一样在Visual Studio中进行调试。


-1
我唯一能给你的建议就是使用Orca,这是一个用于创建和编辑MSI文件的低级工具。至少它会验证你的msi并显示任何错误或警告。

如果WiX无法加载您的Xml,则可能任何其他Xml编辑程序也会失败。找到(或编写)一个简单的程序,只需进行Xml加载,然后查看您获得的错误。 - PhilDW
@PhilDW Orca不是一个XML编辑程序。它应该查看您的MSI并告诉您其中有什么问题-潜在地-并告诉您哪个部分有错误。他可以创建MSI,只是无法成功运行它。 - gbjbaanb
我不知道为什么 gbjbaanb 提到了 Orca 和我的评论,因为我没有提到它。只是要说明显然不明显的事情,这与 MSI 文件或 Orca 没有任何关系。ExecXml 调用是一个自定义操作,是某个人编写的代码,在该代码中,它试图加载一个 Xml 文件并失败了。Orca 无法知道您有不能加载附在 MSI 文件上的损坏 Xml 文件的代码。 - PhilDW
通常情况下,XML文件被嵌入到MSI文件中,因此Orca可以显示其中的内容。这只是一个建议,以帮助他。我不知道你为什么要谈论“任何其他XML编辑程序”。 - gbjbaanb
再次强调显然不明显的事情。错误是无法加载Xml文件。这意味着它要么找不到Xml文件(因为指定其位置的自定义操作参数是错误的),要么Xml格式不正确,在这种情况下,任何尝试加载它的Xml编辑器类型程序也可能失败。这些似乎是调试问题的合理第一步,而不是抱怨Orca做什么和不做什么。 - PhilDW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接