【问题标题】:Create files in Inno Setup setup needed by the [Files] section在 [Files] 部分所需的 Inno Setup 设置中创建文件
【发布时间】:2020-04-22 14:37:24
【问题描述】:

在我的 Inno Setup 脚本中,我需要执行一个命令来生成要在 [Files] 部分中复制的临时文件。我尝试了以下方法:

; cd to the directory of the Inno Setup script and execute a python file
#expr Exec('cmd /C "cd /d %cd% & C:\Python34\python.exe run.py"','','',1,SW_HIDE)

这似乎没有执行,因为我没有看到创建的文件,显然不能包含在安装程序中。

同理,完成删除这些临时文件后,我将如何执行命令?

编辑我确实手动执行了 cmd 并验证它可以工作

【问题讨论】:

  • 问题是您将命令行传递给第一个参数。 Exec 函数在第二个中需要它们; help 说第二个参数可以用来指定要执行的命令行。.

标签: inno-setup


【解决方案1】:

应该是:

#expr Exec('cmd.exe', '/C "cd /d %cd% & C:\Python34\python.exe run.py"','',1,SW_HIDE)

cmd.exe 是你正在执行的进程,其余的是参数。

虽然没有cmd.exe 会更好,因为您实际上并不需要它:

#expr Exec('C:\Python34\python.exe', 'run.py','c:\startupfolder',1,SW_HIDE)

Inno Setup Preprocessor: Exec


虽然我个人会创建一个批处理文件,它首先运行 Python,然后运行 ​​Inno Setup 编译器。它更容易理解。

【讨论】:

  • 谢谢,这是我的问题。该方法的文档不是很好,我第一次阅读时一定错过了一些东西。我同意批处理脚本(这是我的第一次尝试),问题是,我无法说服其他开发人员打破他们的旧习惯,所以这更容易,即使它更丑
  • 我不认为它可以说得更清楚,第一个参数指定要执行的模块的文件名第二个参数可以用来指定命令要执行的行.
  • 它是指定要执行的命令行部分。我想因为我使用的是命令提示符,所以上下文让我感到困惑。我认为如果它说命令行参数会更清楚
猜你喜欢
  • 2014-05-06
  • 1970-01-01
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多