我正在使用Inno安装程序处理安装脚本,并且如果尚未安装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的问题在于Inno Setup调用了它的32位版本,并且由于操作系统为64位而引发了错误。
我刚刚将以下参数添加到“设置”组中:
ArchitecturesInstallIn64BitMode=x64
我不知道它是否有副作用,但以我为例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句