2015-03-13 78 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

相關問題