sql-server - Inno Setup - 尝试安装 NetFx3 功能时出现 "An attempt was made to load a program with an incorrect format"

标签 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 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

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

关于sql-server - Inno Setup - 尝试安装 NetFx3 功能时出现 "An attempt was made to load a program with an incorrect format",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21986988/

相关文章:

java - 在哪里可以找到 SysLog 输出?

c - 如何检查程序是否已在当前登录 session 期间执行? ( Windows )

windows - 在使用 get-content 回显到屏幕时,如何启用 powershell 来解释 ansi 颜色代码?

windows - 如何在控制台窗口中输出窗口标题列表?

SQL Server 给出错误 : is not a recognized function name

sql-server - 如何在sql中为xml的所有子节点添加属性

sql - JSON_MODIFY 删除数组对象

c++ - 在使用时以编程方式弹出 USB 设备

windows - VBS/批量检查下载是否完成

sql - 需要 SQL 连接方面的帮助 : Conditional Matching?