在尝试安装NetFx3功能时,Inno Setup - “尝试加载格式不正确的程序”

时间:2014-02-24 11:52:43

标签: sql-server windows batch-file installation inno-setup

我正在使用Inno Setup安装脚本,如果尚未安装SQL Server 2008 R2 Express,我需要安装它。

因为它需要安装.NET Framework 3.5 SP1,我已经下载并尝试从我的脚本安装netfx35.exe。但我不能直接执行安装,我必须通过“添加角色和功能向导”来完成。为了自动执行,我使用Dism,但是当我尝试启用NetFx3功能时出错。以下是有关我已执行的操作的一些信息:

(该脚本是在Windows 7 Professional SP1 64位下开发的,它是在我以管理员身份登录的Windows Server 2008 R2 Standard 64位下运行的。)

第1步:确保命令行正确无误。

在Windows Server计算机上,我在cmd提示符和批处理文件中都运行了以下命令行,以确保我尝试执行的命令是正确的,并且能够正常工作。

Dism /online /enable-feature /featurename:NetFx3 /NoRestart

结果是我的预期,.Net Framework 3.5已启用。

第2步:尝试从Inno安装脚本执行相同的命令行。

Exec('Dism', ' /online /enable-feature /featurename:NetFx3 /NoRestart', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
MsgBox(SysErrorMessage(ResultCode), true, MB_OK);

当我编译并执行我的脚本时,我收到错误“尝试加载格式不正确的程序”。经过一些研究,我发现了类似的情况,因为该架构(尝试在64位模式下运行32位应用程序)。因此,我尝试使用以下命令:

Dism.exe /online /enable-feature /featurename:NetFx3 /NoRestart
C:\Windows\System32\Dism.exe /online /enable-feature /featurename:NetFx3 /NoRestart
C:\Windows\SysWOW64\Dism.exe /online /enable-feature /featurename:NetFx3 /NoRestart

即使我从Inno Setup运行批处理,它也不起作用。我怀疑它来自管理员权限,但在Inno Setup函数中 IsAdminLoggedOn 返回True。

任何人都可以帮助我吗?我不知道该怎么办了。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。

DISM的问题在于它的32位版本是由Inno Setup调用的,并且因为操作系统是64位而引发了错误。

我刚刚将以下参数添加到设置组:

ArchitecturesInstallIn64BitMode=x64

我不知道它是否有副作用,但在我的情况下它有效。