0

上个月(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 搜索影响 .NET 的 Microsoft 更新时,我空手而归InstallUtilLib.dll。那么我如何确定这个问题以确定原因和/或解决方案呢?

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:\MfgSys\System\FourthShift.SDKAdministrator.dll" "C:\Users\bmarty\AppData\Local\Temp\{C449BDEA-AA73-4FDE-A6AF-9116E1D7DEBB}\_isconfig.xml")
MSI (s) (58:20) [14:17:27:973]: Invoking remote custom action. DLL: C:\windows\Installer\MSI7282.tmp, Entrypoint: ManagedInstall
Error 1001.
4

1 回答 1

1

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

  • 停止使用安装程序类。它们很脆弱,难以调试,并且可能无法正确编写。另一方面,如果您习惯了它们,它们会非常方便和舒适。
  • 避免在构建机器上安装最新版本的 .NET。或者将相关文件从 4.0 框架复制到一个新文件夹并指向 InstallShield。(使用 Process Monitor 之类的工具来确定完整集。)
  • 添加调整 _isconfig.xml 值的后处理步骤。
  • 使用正确检索版本的 InstallShield 版本。例如,如果您至少没有 InstallShield 2015 的服务包,请尝试一下。(我认为我们发布了一个修复程序,尽管有一些迹象表明它只是部分的。我们将在下一个版本中提供更好的修复程序,或者如果我们的支持团队收到足够的请求,则更快。)
于 2016-04-26T12:12:23.393 回答