2014-09-02 6 views
4

Я создаю скрипт установки в Inno, и мне было интересно, как я могу получить не «жестко закодированный» путь. Вот пример:Inno Setup (Как получить динамический путь к файлу)?

Image, which contains patch source

Заранее спасибо!

РЕШЕНИЕ:

Вы можете получить .iss папку с помощью предопределенной переменной

SourcePath

Usage будет, как: {#SourcePath} \ ??? \ Bin \ x86 \ Release \ ???. exe

Спасибо всем, кто внес свой вклад!

+0

'#define MyAppName "MY APP" #define MyAppExeName "my_app.exe" [Файлы] Источник:«{userdesktop} \ {# MyAppName} \ SOURCES.PROJECTS \ ??? \ ??? \ Release \ {# MyAppExeName} "' – RobeN

+0

@RobeN, если я запустил этот скрипт с другого компьютера и скажу, что папка не на рабочем столе, это не сработает правильно? – Janck7

+0

'{userdesktop}' константа всегда указывает реальный рабочий стол текущего пользователя - независимо от того, какая языковая версия Windows установлена. На польском языке это будет, например, 'C: \ Użytkownicy \ MOJ_PROFIL \ Pulpit' – RobeN

ответ

11

Упоминание о source directory говорит (подчеркнуто мной):

По умолчанию, компилятор установки рассчитывает найти файлы ссылки в [Файлы] Параметры раздела Источник данного сценария, и файлы ссылки в раздел [Setup], в том же каталоге, файл сценария находится , если они не содержат полностью идентифицированных путей. Чтобы указать в другом исходном каталоге, создайте директиву SourceDir в разделе [Setup] сценария .

Включает также опцию указания относительного пути к файлам. Итак, давайте предположим, что вы имеете следующую структуру файла и не был указан другой путь в 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.

Смежные вопросы