首页 > 解决方案 > 从 Inno Setup 执行的 PowerShell 脚本失败,并显示“检索具有 CLSID {XXXX} 的组件的 COM 类工厂失败 - 错误 80040154”

问题描述

我想使用 Inno Setup 将文件夹转换为带有 IIS 的应用程序。

我发现我可以用 PowerShell 做到这一点,使用

ConvertTo-WebApplication 'IIS:\Sites\Default Web Site\MY_APP'

我已将此添加到我的 Inno Setup 脚本中:

[Run]
Filename: "powershell.exe"; \
  Parameters: "-ExecutionPolicy Bypass -Command ConvertTo-WebApplication 'IIS:\Sites\Default Web Site\MY_APP'" \
  WorkingDir: {app}; Flags: runhidden 

但是 PowerShell 失败了:

由于以下错误,检索具有 CLSID {XXXX} 的组件的 COM 类工厂失败:80040154 类未注册

标签: powershelliiscominno-setup

解决方案


作为 32 位应用程序中的 Inno Setup,它将默认运行 32 位版本的 PowerShell,而后者又将使用 32 位 COM 类。

所需的 COM 类ConvertTo-WebApplication似乎仅对 64 位可用(或已注册)。

添加Flags: 64bit使 Inno Setup 使用 64 位版本的 PowerShell。

[Run]
Filename: "powershell.exe"; \
  Parameters: "-ExecutionPolicy Bypass -Command ConvertTo-WebApplication 'IIS:\Sites\Default Web Site\MY_APP'" \
  WorkingDir: {app}; Flags: runhidden 64bit

或者使用64 位安装模式


对于类似的问题,请参阅从 Inno Setup 调用 .bat 文件时无法识别 .bat 文件中的命令,但在手动运行 bat 文件时工作正常


推荐阅读