You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

借助Inno Setup调用PowerShell转换IIS应用报错80040154

解决Inno Setup中PowerShell执行ConvertTo-WebApplication报错80040154的问题

这个80040154类未注册的错误我之前也碰到过,大概率是位数不兼容搞的鬼!默认情况下Inno Setup编译的是32位安装包,它会调用32位的PowerShell,但IIS的核心管理组件都是64位的,32位PowerShell根本访问不到这些组件,自然就报找不到类的错误了。下面给你几个靠谱的解决步骤:

1. 针对系统位数调用对应版本的PowerShell

64位系统里,32位程序访问System32会被系统重定向到SysWOW64(32位程序目录),所以得用特殊路径绕开这个重定向,直接调用64位PowerShell。你可以修改[Run]段的配置,根据系统位数选择对应的PowerShell路径:

[Run]
; 64位系统调用原生64位PowerShell
Filename: "{sys}\WindowsPowerShell\v1.0\powershell.exe"; Parameters: "-ExecutionPolicy Bypass -Command ""Import-Module WebAdministration; ConvertTo-WebApplication 'IIS:\Sites\Default Web Site\MY_APP'"""; WorkingDir: {app}; Flags: runhidden; Check: IsWin64
; 32位系统调用32位PowerShell
Filename: "{syswow64}\WindowsPowerShell\v1.0\powershell.exe"; Parameters: "-ExecutionPolicy Bypass -Command ""Import-Module WebAdministration; ConvertTo-WebApplication 'IIS:\Sites\Default Web Site\MY_APP'"""; WorkingDir: {app}; Flags: runhidden; Check: not IsWin64

这里的Check参数会自动判断系统位数,帮你选对PowerShell版本,从根源上解决位数不兼容的问题。

2. 显式导入WebAdministration模块

有时候PowerShell可能不会自动加载IIS管理模块,导致找不到ConvertTo-WebApplication命令,所以最好在执行命令前先显式导入模块,也就是上面配置里的Import-Module WebAdministration这部分,确保命令能正常被识别。

3. 确保安装程序以管理员权限运行

修改IIS配置需要管理员权限,如果你的安装程序没以管理员身份运行,也可能出现各种奇怪的错误(包括伪装成类未注册的情况)。所以一定要在[Setup]段里加上权限声明:

[Setup]
PrivilegesRequired=admin

这样安装启动时会自动弹出UAC请求,拿到足够的权限去修改IIS设置。

把这几点结合起来,应该就能解决你遇到的报错了!

内容的提问来源于stack exchange,提问作者Serinkan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 18:12:26