2015-03-13 87 views
1

在我的Inno安装脚本中,我需要执行一个命令来生成要在[Files]部分中复制的临时文件。我曾尝试以下:在[Files]部分所需的Inno Setup安装程序中创建文件

; 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并验证了它的工作原理

+0

问题是您将命令行传递到第一个参数。第二个['Exec'](http://www.jrsoftware.org/ispphelp/index.php?topic=exec)函数需要它们; help说*第二个参数可以用来指定要执行的命令行。*。 – TLama 2015-03-13 15:41:25

回答

2

它应该是:

#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编译器。这是方式更容易,更容易理解。

+0

谢谢,那是我的问题。该方法的文档不是很好,我第一次阅读时肯定错过了一些东西。我同意批处理脚本(这是我的第一次尝试),问题是,我无法说服其他开发人员打破他们的旧习惯,所以这很容易,尽管它更丑陋 – steveo225 2015-03-13 15:57:10

+0

我不认为它可以无论如何都说得更清楚,*第一个参数指定要执行的模块的文件名*,*第二个参数可以用来指定要执行的命令行*。 – TLama 2015-03-13 16:03:35

+0

它的*指定命令行来执行*部分。我想,因为我正在使用命令提示符,上下文使我困惑。我认为它会更清楚,如果它说*命令行参数* – steveo225 2015-03-13 20:00:13

相关问题