在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
相关产品推荐
相关产品推荐

