2014-09-02 98 views
4

我在Inno中做了一個設置腳本,我在想,如何獲得非「硬編碼」路徑。下面是例子:Inno Setup(如何獲取文件的動態路徑)?

Image, which contains patch source

在此先感謝!

SOLUTION:{#SourcePath} \ ??? \ BIN:

您可以通過使用預定義變量

SOURCEPATH

用法會像得到的.iss文件夾\ x86 \ Release \ ??? .exe

謝謝所有人的貢獻!

+0

'的#define MyAppName 「MY APP」 的#define MyAppExeName 「my_app.exe」 [文件] 來源:「{} userdesktop \ {#MyAppName} \ SOURCES.PROJECTS \ ??? \ ??? \發佈\ {#MyAppExeName}「' – RobeN 2014-09-02 10:04:43

+0

@RobeN如果我從其他計算機上運行此腳本,並讓該文件夾不在桌面上,這將無法正常工作? – Janck7 2014-09-02 10:11:23

+0

'{userdesktop}'常量總是指向當前用戶的真實桌面 - 無論安裝的是哪種語言版本的Windows。在波蘭語中,它將是例如'C:\Użytkownicy\ MOJ_PROFIL \ Pulpit' – RobeN 2014-09-02 10:13:21

回答

11

有關source directory基準說(由我強調):

默認情況下,安裝程序編譯器希望找到腳本的[文件]節源參數引用的文件,並且文件中引用 在如果它們不包含完全合格的路徑名稱,則位於同一目錄下的[Setup]部分腳本文件爲 。要指定 不同的源目錄,請在 腳本的[Setup]部分中創建SourceDir僞指令。

這還包括指定文件相對路徑的選項。因此,讓我們假設你有以下的文件結構,並且沒有在SourceDir指令指定一個不同的路徑:

C:\Deploy\Script.iss 
C:\Deploy\MyProg.exe 
C:\Deploy\SubFolder\MyOtherProg.exe 
C:\Folder\SomeFile.txt 

現在,如果你想包括MyProg.exe到從Script.iss腳本編制設置,你可以不帶路徑僅指定文件名,因爲MyProg.exe文件存儲在同一文件夾中的腳本,所以你可以這樣寫:

[Files] 
Source: "MyProg.exe"; DestDir: "{app}" 

而且你可以使用相對路徑MyOtherProg.exe這是存儲在文件夾所在的子文件夾中Script.iss腳本存儲這樣:

[Files] 
Source: "SubFolder\MyOtherProg.exe"; DestDir: "{app}" 

,以及你可以使用相對路徑,包括存儲在父文件夾的子文件夾中SomeFile.txt其中腳本存儲:

[Files] 
Source: "..\Folder\SomeFile.txt"; DestDir: "{app}" 

更多相對路徑約定,你可以在this chapter中閱讀。