【问题标题】:How to provide an input to a batch file ran using Inno Setup installer?如何为使用 Inno Setup 安装程序运行的批处理文件提供输入?
【发布时间】:2015-05-25 14:17:52
【问题描述】:

要安装我们的程序,我们需要运行批处理文件(它会安装整个应用程序),它会提示用户几个问题,我们会以“是/否”格式提供答案。我正在编写一个脚本,并在脚本中调用该批处理文件来安装整个程序。现在我想做的是在安装过程中隐藏控制台并通过脚本提供所有答案。

【问题讨论】:

  • 这是一个相当广泛的问题。您在流程的哪一部分遇到问题? 1) 如何在 Inno Setup 脚本中询问用户? 2)如何将答案传递给批处理文件? 3) 如何处理批处理文件中的答案?
  • 感谢马丁的回复。我只是想知道当批处理文件要求用户输入时如何将答案传递给批处理文件,是否可以在主 UI 上为这些问题创建一个复选框,该复选框可以在运行时提供相同的工作。
  • 抱歉,您没有回答我的问题。不管怎样,我已经试着回答了。答案和你的问题一样模糊。

标签: batch-file inno-setup


【解决方案1】:

最简单的解决方案是修改批处理文件以执行您希望它执行的操作,而无需询问。


如果您不能这样做(例如,如果批处理文件是第 3 方),则必须将其输入从文本文件重定向。

创建一个包含答案的文本文件(例如answers.txt):

y
n
y
y

创建一个包装批处理文件,该文件运行您的安装批处理并将其输入从答案文件 (wrapper.bat) 重定向:

@echo off
install.bat < answers.txt

安装所有文件并让 Inno Setup 运行 wrapper.bat:

[Files]
Source: "install.bat"; DestDir: "{app}"
Source: "wrapper.bat"; DestDir: "{app}"
Source: "answers.txt"; DestDir: "{app}"

[Run]
Filename: "{app}\wrapper.bat"; Flags: runhidden

【讨论】:

  • 感谢 Martin,它确实有效,但是 install.bat 是否有可能从 answers.txt 中读取一些空值,因为我最后会遇到一些错误。
  • Martin 是否可以从 Inno 脚本向批处理文件提供输入,因为如果我这样做我不想使用 wrapper.bat 文件,我将无法隐藏我的 install.bat 文件,因为 runhidden flag 只会隐藏 wrapper.bat 文件。
  • 最后出现一些错误:这很模糊。 因为 runhidden 标志只会隐藏 wrapper.bat 文件 这不是真的。你试过了吗?
猜你喜欢
  • 2015-05-21
  • 1970-01-01
  • 2017-05-06
  • 1970-01-01
  • 2014-04-05
  • 2018-01-18
相关资源
最近更新 更多