Как получить имя exe в скрипте Innosetup из полного пути exe?

Например, если полный путь к файлу 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 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам