_isconfig.xml 中支持的运行时的值导致托管安装期间出现错误 1001



上个月(2016 年 3 月)我正在构建一个 InstallShield 2015 项目,该项目的.NET Installer Class属性设置为 Yes ,一切似乎都运行良好。这个月,我在运行相同的安装时突然开始收到错误1001。看到错误来自这个.NET Installer Class组件,我决定关闭 .NET Installer Class 属性作为测试。事实上,这解决了问题。但是我们有另一个构建系统,我们可以在其中构建完全相同的代码,并且一切仍然有效,这表明存在环境问题。

经过一些额外的研究,我发现文件_isconfig.xml显示了两个系统之间supportedRuntime version属性的不同值,我认为这是问题的密切相关指标。其他研究表明,此版本可能来自 InstallUtilLib.dll ,这确实与我在两个系统上_isconfig.xml中看到的版本相匹配。安装对<supportedRuntime version="v4.0.30319"/> 工作正常,在<supportedRuntime version="v4.6.1055"/>时失败。顺便说一句,较新的InstallUtilLib.dll日期为 2015-11-05,所以我想这个问题理论上可能是自该日期以来任何更新的结果。

我看到我的系统最近安装了一些.NET Framework更新,但是在Google搜索影响InstallUtilLib.dll Microsoft更新时,我空手而归。那么我如何确定这个问题以确定原因和/或解决方案呢?

MSI 日志报告错误如下:

MSI (s) (58:14) [14:17:27:958]: Executing op: CustomActionSchedule(Action=_1A0C0EC89595D04ACFD3852EF29B12BD.install,ActionType=3073,Source=BinaryData,Target=ManagedInstall,CustomActionData=/installtype=notransaction /action=install /LogFile= "M:MfgSysSystemFourthShift.SDKAdministrator.dll" "C:UsersbmartyAppDataLocalTemp{C449BDEA-AA73-4FDE-A6AF-9116E1D7DEBB}_isconfig.xml")
MSI (s) (58:20) [14:17:27:973]: Invoking remote custom action. DLL: C:windowsInstallerMSI7282.tmp, Entrypoint: ManagedInstall
Error 1001.

您已正确诊断问题的直接原因。其余部分是由于 InstallShield 使用了它所指向的框架的错误版本。(我相信在旧版本中,它错误地使用文件版本而不是 CLR 版本。以下是我所看到的您的选择:

  • 停止使用安装程序类。它们很脆弱,难以调试,而且可以说不可能正确编写。另一方面,如果您习惯了它们,它们可以非常方便和舒适。
  • 避免在生成计算机上安装最新版本的 .NET。或者将相关文件从 4.0 框架复制到一个新文件夹,然后将 InstallShield 指向该文件夹。(使用进程监视器等工具确定完整集。
  • 添加调整_isconfig.xml值的后处理步骤。
  • 使用可正确检索版本的 InstallShield 版本。例如,如果您至少没有 InstallShield 2015 的服务包,请尝试一下。(我认为我们发布了针对此问题的修复程序,尽管有一些迹象表明它只是部分的。我们将在下一个版本中提供更好的修复,或者如果我们的支持团队收到足够的请求,我们会更早。

最新更新