2016-04-25 55 views
0

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

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

我看到我的系统最近安装了一些.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:\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. 

回答

1

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

  • 停止使用安装程序类。它们很脆弱,很难调试,并且可以证明无法正确写入。另一方面,如果你习惯了它们,它们可以非常方便和舒适。
  • 避免在您的生成机器上安装最新版本的.NET。或者将相关文件从4.0框架复制到一个新文件夹中并指向InstallShield。 (使用进程监视器等工具来确定整个集合。)
  • 添加调整_isconfig.xml值的后处理步骤。
  • 使用正确检索版本的InstallShield版本。例如,如果您至少没有安装InstallShield 2015的服务包,请尝试一下。 (我想我们发布针对修复,虽然已经有一些迹象表明,这是只是局部的。我们将有一个更好的固定在我们的下一个版本,或更早,如果我们的支持团队获得足够的请求。)
+0

安装SP1解决了这个问题。 – BlueMonkMN