4

我想通过 InstallShield setup 在 Windows Server 2012 上激活 IIS。我尝试了以下 DISM 命令:

DISM.EXE /enable-feature /online /featureName:IIS-WebServerRole /featureName:IIS-WebServer

此处描述:在 Windows Server 2012 R2 上安装 IIS 8.5

当我执行我的安装程序时,会发生错误:

错误 1721

进程监视器说,DISM 将C:\Windows\SysWOW64\DISM.EXEExit Status 11. 作为我使用的文件位置[SystemFolder]。当我定义文件位置C:\Windows\System32时,它也使用C:\Windows\SysWOW64\DISM.EXE.

什么是激活 IIS 的艰难方法?

4

1 回答 1

2

根据这篇文章,错误代码 11 表示 DISM 的 32 位版本正在 64 位系统上使用。这对应于在 64 位系统上安装 32 位 MSI 并使用它来定位和启动 DISM。Windows Installer 不允许您从 32 位 MSI 引用 64 位位置。Heath Stewart 的文章不同的处理器架构需要不同的软件包涉及到这一点,但主要是从安装到 32 位或 64 位位置的角度。事实证明,在那里查找文件同样困难。

为了从 64 位位置启动 64 位 DISM,您将需要一些其他代码。或许可以从32位代码中定位到64位系统文件夹,但我知道有些64位位置只能通过64位代码正确查询。因此,我建议您编写一个 64 位帮助程序 exe 来查找并启动 64 位 DISM。然后,您将需要自定义操作的两种变体,以便您仅尝试在 64 位系统上使用 64 位包装器(何时VersionNT64定义)并在 32 位系统上使用 32 位包装器或直接调用。

或者,如果升级和使用 exe 是一个选项,InstallShield 2013 及更高版本包括对作为套件项目类型的一部分安装 Windows 功能的支持,从而为您处理这项工作。(免责声明:我在 InstallShield 上工作是有报酬的。)

于 2014-03-06T14:09:14.963 回答