我正在使用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 Setup脚本执行相同的命令行.
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.
有谁能够帮我 ?我不知道该怎么办了.
先感谢您.
最佳答案 我找到了解决方案.
DISM的问题在于它的32位版本是由Inno Setup调用的,并且因为操作系统是64位而引发了错误.
我刚刚将以下参数添加到安装组:
ArchitecturesInstallIn64BitMode=x64
我不知道它是否有副作用,但在我的情况下它有效.