我正在使用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。
任何人都可以帮助我吗?我不知道该怎么办了。
提前谢谢。
答案 0 :(得分:2)
我找到了解决方案。
DISM的问题在于它的32位版本是由Inno Setup调用的,并且因为操作系统是64位而引发了错误。
我刚刚将以下参数添加到设置组:
ArchitecturesInstallIn64BitMode=x64
我不知道它是否有副作用,但在我的情况下它有效。