InstallScript无法从命令提示符读取包含结果的文本文件

时间:2018-04-26 02:30:57

标签: command-prompt installshield installscript

我正在编写一个Installscript函数,用于在命令提示符下运行命令,将结果从控制台重定向到文本文件,然后读取文本文件以获取信息。

<ListItemText
    inset
    classes={{
      inset: [Name of your jss clases go here]
    }}
>
    List item text
</ListItemText>

send命令方法没有按照我的意愿使用szCmdLine运行命令,它无法识别命令并产生以下错误:

'wslconfig'未被识别为内部或外部命令, 可操作程序或批处理文件。

但是,如果我手动启动cmd.exe而不是使用我的脚本,它会完全运行命令。我的脚本有什么问题以及如何解决这些问题?提前谢谢大家。

1 个答案:

答案 0 :(得分:1)

我在这里看到两个可能令人困惑的元素。一个是32位进程的文件系统重定向(导致加载无法找到wslconfig的32位cmd.exe)。另一个问题是输出重定向的命令行处理是否符合您的要求。

要测试,您可以尝试以下方法:

  • 从显式32位命令提示符(c:\Windows\SysWow64\cmd.exe
  • 运行测试
  • 运行其他命令,例如cmd /c echo got-it > D:\output.txt

我怀疑你可能不得不解决这两个问题,但强烈认为32位上下文存在问题。要解决上下文问题,请考虑使用WINSYSDIR64

将代码更改为以下内容
...
szCmdPath = WINSYSDIR64 ^ "cmd.exe";
...
Disable(WOW64FSREDIRECTION);
LaunchAppAndWait(...)
Enable(WOW64FSREDIRECTION);

(作为替代方法,您可以使用32位上下文中的C:\ Windows \ Sysnative访问64位文件夹而不禁用WOW64FSREDIRECTION。不幸的是,没有填充该路径的变量,所以你有构造或硬编码该路径。)

要解决输出潜在重定向问题,请考虑引用/ c:

的参数
...
szCmdLine = "/c \"wslconfig /l > D:\\output.txt\"";
...