Как получить имя exe в скрипте Innosetup из полного пути exe? - PullRequest
1 голос
/ 08 декабря 2011

Например, если полный путь к файлу exe указан как C:\Projects\Executable\Serial Data Streaming Recorder.exe, мне нужно извлечь имя файла exe. То есть Serial Data Streaming Recorder, и я хочу динамически присвоить это значение переменной из полного пути к файлу exe.

Вручную, как в примере ниже:

#define ExePath "C:\Projects\Executable\Serial Data Streaming Recorder.exe"
#define AppName "Serial Data Streaming Recorder" 

Я хочу динамически присвоить значение Serial Data Streaming Recorder переменной AppName из полного пути к файлу exe.

Я использую это имя во многих местах сценария inno для многих файлов, поэтому я не хочу делать это вручную, присваивая это значение переменной.

Ответы [ 2 ]

2 голосов
/ 08 декабря 2011

Для этого во время выполнения в [Code] Имя и расширение файла можно получить с помощью ExtractFileName(). Я думаю, что вы можете затем удалить расширение, передав пустое значение функции ChangeFileExt(), но если нет, вы можете найти и удалить его, используя стандартные строковые операции, такие как Pos() и Delete().

Если вам нужно сделать это во время компиляции, вам нужно использовать ISPP, большинство функций имеют одинаковое имя и подпись, поэтому используйте ExtractFileName(), чтобы получить само имя файла, RPos(), чтобы получить точку, и Delete() чтобы удалить его.

0 голосов
/ 08 декабря 2011

Хм ... Я обычно решаю это просто, никогда не используя абсолютные пути в моих установочных скриптах. Вы также можете просто определить ExePath так:

#define BasicName "Serial Data Streaming Recorder"
#define ExePath   "C:\Projects\Executable\" + BasicName + ".exe"

и затем используйте {#BasicName} всякий раз, когда вам нужно только имя.

Существует также несколько функций сценария препроцессора (не pascalscript), которые могут выполнять строковые манипуляции для выполнения более сложных задач.

...