Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Использование ExtractFileName в Inno Setup: ошибка 123 при создании пути в Windows

Delphi , Программа и Интерфейс , Инсталяция

При создании установщика с помощью Inno Setup иногда возникает необходимость использовать часть пути установки в качестве имени значка (иконки) в меню Пуск. Для этого можно воспользоваться функцией ExtractFileName, но при попытке компиляции или запуска установщика может возникнуть ошибка 123 с сообщением о том, что не удается создать путь в Windows.

Проблема

Вопрос, с которым сталкиваются разработчики, заключается в том, как правильно использовать ExtractFileName для получения последней части пути установки и вставки ее в качестве имени значка. Например, следующая запись в разделе [Icons] может привести к ошибке:

[Icons]
Name: '{group}\ApplicationName\' + ExtractFileName({app}) + '\filename.txt'

При запуске установщика может появиться сообщение об ошибке:

c:\Windows\system32\'c: could not be created.

Причина ошибки

Ошибка возникает из-за того, что Inno Setup не поддерживает интерполяцию строк в параметре Name раздела [Icons]. attempt to use ExtractFileName directly in the Name parameter leads to incorrect path formation.

Решение

Для решения этой проблемы можно использовать скриптовый константный параметр (scripted constant). Ниже приведен пример кода, который демонстрирует, как это сделать:

[Icons]
Name: "{group}\ApplicationName\{code:GetAppName}\filename.txt"

[Code]

function GetAppName(Param: string): string;
begin
  Result := ExtractFileName(ExpandConstant('{app}'));
end;

В этом примере создается функция GetAppName, которая извлекает последнюю часть пути установки с помощью ExtractFileName. Функция вызывается в скриптовом константном параметре {code:GetAppName}, который затем используется в качестве части имени значка.

Альтернативный ответ

Если вам нужно только добавить последнюю часть пути установки в качестве нового уровня в меню Пуск, вы можете использовать следующую запись в разделе [Icons]:

[Icons]
Name: "{group}\ApplicationName\{app}\filename.txt"

В этом случае последняя часть пути установки ({app}) будет добавлена в качестве нового уровня в меню Пуск.

Заключение

При использовании ExtractFileName в Inno Setup для получения последней части пути установки и вставки ее в качестве имени значка важно правильно использовать скриптовые константные параметры. Это поможет избежать ошибки 123 при создании пути в Windows и гарантирует корректную работу установщика.

Создано по материалам из источника по ссылке.

В контексте: Вопрос о правильном использовании функции `ExtractFileName` в Inno Setup для получения имени файла из пути установки и вставки его в качестве имени значка в меню Пуск, а также решение проблемы, связанной с ошибкой 123 при создании пути в Wind


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Инсталяция ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 17:29:24/0.0032720565795898/0