我想通过InstallShield设置在Windows Server 2012上激活IIS。我尝试了以下DISM命令:
DISM.EXE /enable-feature /online /featureName:IIS-WebServerRole /featureName:IIS-WebServer
此处描述:Installing IIS 8.5 on Windows Server 2012 R2
执行安装程序时,会发生错误:
Process Monitor说,DISM将在C:\Windows\SysWOW64\DISM.EXE
中执行,并产生Exit Status 11
。作为文件位置,我使用了[SystemFolder]
。当我定义文件位置C:\Windows\System32
时,它也会使用C:\Windows\SysWOW64\DISM.EXE
。
激活IIS有什么困难的方法?
答案 0 :(得分:2)
Per this post,错误代码11表示32位版本的DISM正在64位系统上使用。这与在64位系统上安装32位MSI并使用它来定位和启动DISM相对应。 Windows Installer不允许您从32位MSI引用64位位置。 Heath Stewart的文章Different Packages are Required for Different Processor Architectures触及了这一点,但主要是从安装到32位或64位的角度。事实证明,在那里找到文件同样困难。
要从64位位置启动64位DISM,您需要一些其他代码。可以从32位代码中找到64位系统文件夹,但我知道某些64位位置只能通过64位代码正确查询。因此我建议您编写一个64位帮助程序exe来查找并启动64位DISM。然后,您将需要两个自定义操作的变体,以便您只尝试在64位系统上使用64位包装器(定义{{1}}时)并使用32位包装器或直接调用32位系统。
或者,如果升级和使用exe是一个选项,InstallShield 2013及更高版本包括对作为Suite项目类型的一部分安装Windows功能的支持,这将为您处理这项工作。 (免责声明:我有权使用InstallShield工作。)