powershell - 从 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 类未注册
解决方案
作为 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 文件时工作正常。
推荐阅读
- python - 在我尝试安装的任何 python 包上,我都无法通过“收集'任何包名'”
- python - 循环遍历子目录及其子目录并创建字典
- javascript - 函数无法使用从地址栏解析的字符串作为参数
- c++ - 如何将数组中的连续数字设置为0 C++
- maven - 如何正确导入我更改并重新构建到现有项目中的 Maven 依赖项?
- c++ - 如果唯一的输入是一个字符串并且创建了一个额外的字符串,那么函数的空间复杂度是 O(n) 吗?
- php - Extracting data from protect TXT file and turning it into a table via PHP
- javascript - 当我旋转它时,如何将图像保持在模态体内部或内部?
- reactjs - 将带有参数的 onClick 分配给地图函数 React 内部的组件
- neuron-simulator - 在神经元上没有这样的文件或目录?