【问题标题】:how to run .sh file in Ubuntu using installScript如何使用 installScript 在 Ubuntu 中运行 .sh 文件
【发布时间】:2018-05-07 09:57:57
【问题描述】:

我正在 Windows 10 中使用 InstallShield 2018 创建安装。我需要从 Installscript 中的函数在 Ubuntu 中执行脚本文件 (.sh)。我尝试了以下方法,但没有成功:

szCmdPath = "C:\\Users\\Admin\\AppData\\Local\\Microsoft\\WindowsApps\\Ubuntu.exe";
szCmdLine = ". /mnt/d/test.sh";
LaunchAppAndWait( szCmdPath, szCmdLine, WAIT);

但是,我可以在 Ubuntu 终端中执行完全相同的文件,而且效果很好。我确实打开了 Linux 的 Window 子系统并在 Windows 上安装了 Ubuntu。为什么会这样?为什么我可以从 installscript 运行 cmd.exe 而不能从 Ubuntu 运行? 提前谢谢你。

编辑 1:如果我传递一个空字符串作为参数,Ubuntu 将启动并等待我的输入命令。但是当我将路径传递给我的脚本文件时,除了在我的安装继续运行之前终端控制台闪烁之外什么都没有发生。

【问题讨论】:

    标签: bash ubuntu-16.04 installshield installscript


    【解决方案1】:

    my readingwslubuntu 略有不同。看起来wsl 有点神奇,偶尔类似于bash -cubuntu -c,而您可以认为Ubuntu.exe 有点等同于/bin/bash

    如果您尝试在 bash 提示符下运行 /bin/bash . /mnt/d/test.sh,事情就不会顺利。所以正确的方法将取决于你的脚本的内容和你需要发生的事情。我认为以下选项之一最有可能:

    • 从你的命令中删除.;而是运行 ...\Ubuntu.exe /mnt/d/test.sh
    • -c 添加到您的命令中;而是运行 ...\Ubuntu.exe -c . /mnt/d/test.sh

    请注意,%LOCALAPPDATA%\Microsoft\WindowsApps\Ubuntu.exe 是一个特殊文件(零字节),因此它需要一些特殊处理也是合理的。例如,它可能需要一个 64 位的调用者。如果是这种情况,您可能需要通过 64 位 cmd 提示符将其包装在调用中。然而,我的快速测试并没有显示出这种可能性,所以我认为它可以在没有这种额外间接的情况下工作。

    【讨论】:

      猜你喜欢
      • 2016-03-21
      • 2014-02-03
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 2012-03-07
      相关资源
      最近更新 更多