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

在Windows10的InstallShield2018中通过InstallScript调用Ubuntu执行.sh脚本失败求助

解决InstallScript调用WSL中Shell脚本的问题

看起来你遇到的问题是因为直接调用Ubuntu.exe传递参数的方式不符合WSL的启动规则,咱们来一步步修正:

问题根源

直接用Ubuntu.exe . /mnt/d/test.sh这种方式启动WSL,并不会正确执行脚本——因为Ubuntu.exe的启动参数需要特定格式,而且相比直接调用发行版exe,微软更推荐使用wsl.exe来统一调用WSL环境,兼容性更好。

解决方案

1. 改用wsl.exe作为启动程序

wsl.exe是Windows系统自带的WSL统一调用入口,位于C:\Windows\System32\wsl.exe,用它来执行脚本更可靠。

2. 确保脚本具备执行权限

先在WSL终端里给脚本加上执行权限,不然即使路径正确也没法运行:

chmod +x /mnt/d/test.sh

3. 修改InstallScript代码

把你的代码替换成下面的版本:

szCmdPath = "C:\\Windows\\System32\\wsl.exe";
# 如果你的WSL里有多个发行版,指定Ubuntu的话可以用:szCmdLine = "-d Ubuntu /mnt/d/test.sh";
szCmdLine = "/mnt/d/test.sh";
LaunchAppAndWait( szCmdPath, szCmdLine, WAIT );

如果你的脚本开头没有指定shebang(比如#!/bin/bash),可以明确指定用bash执行:

szCmdLine = "-e bash /mnt/d/test.sh";

额外检查点

  • 确认wsl.exe的路径正确:Win10系统里C:\Windows\System32\wsl.exe是默认存在的,不需要额外路径配置。
  • 确保脚本里的路径都是WSL格式(比如不要用Windows的D:\test.sh,必须转成/mnt/d/test.sh)。
  • 如果脚本需要特定工作目录,可以在命令里先切换目录再执行,比如:
    szCmdLine = "-e bash -c 'cd /mnt/d && ./test.sh'";
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:47:58