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

Устранение проблем с запуском exe-файла при удалении программы в Inno Setup

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

При создании инсталлятора с помощью Inno Setup иногда возникают проблемы с запуском exe-файла во время удаления программы. В этой статье мы рассмотрим одну из таких проблем и способы ее решения.

Описание проблемы

Пользователь столкнулся с проблемой, при которой exe-файл не запускается во время удаления программы, созданной с помощью Inno Setup. В коде инсталлятора есть следующая секция:

[Files]
Source: "Tracker\LocalSandboxInstallTracker.exe"; DestDir: "{app}/Tracker";
Source: "Tracker\LocalSandboxInstallTracker.exe.config"; DestDir: "{app}/Tracker";
Source: "Tracker\Tracker.Client.dll"; DestDir: "{app}/Tracker";

[Run]
Filename: "{app}\Tracker\LocalSandboxInstallTracker.exe"; Parameters: " {#MyAppVersion} install"; Flags: runhidden; StatusMsg: "Sending tracking data..."

[Code]
procedure InitializeUninstallProgressForm();
var
  ResultCode: Integer;
begin
  Exec ('{app}\Tracker\LocalSandboxInstallTracker.exe',' {#MyAppVersion} uninstall','',SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;

При установке все работает нормально, но при удалении exe-файл не запускается. Пользователь разместил точку останова в команде Exec, и она действительно проходит, но сам exe-файл не запускается.

Подтвержденный ответ

Чтобы решить эту проблему, необходимо использовать функцию ExpandConstant для расширения константы {app} перед передачей ее в скрипт-функцию Exec. Вот как нужно修改 скрипт:

Exec(ExpandConstant('{app}\Tracker\LocalSandboxInstallTracker.exe'),
  '{#MyAppVersion} uninstall', '', SW_SHOW,
  ewWaitUntilTerminated, ResultCode);

Также важно проверить результат функции и код результата, чтобы соответствующим образом реагировать, если функция Exec терпит неудачу. Код ошибки, который вы получите в ResultCode, можно проверить по ссылке System Error Codes или использовать SysErrorMessage(ResultCode) для получения описания ошибки из скрипта.

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

Другой способ решить эту проблему — правильно вызывать функцию ExpandConstant в команде Exec:

[Code]
procedure InitializeUninstallProgressForm();
var
  ResultCode: Integer;
begin
  Exec (ExpandConstant('{app}\Tracker\LocalSandboxInstallTracker.exe')
    ,' {#MyAppVersion} uninstall','',SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;

В этом случае также важно убедиться, что вы вызываете эту процедуру из CurUninstallStepChanged(usUninstall), так как именно в этот момент фактически начинается удаление. Кроме того, нет необходимости использовать ExpandConstant для #MyAppVersion, так как это расширяется во время компиляции, а не во время выполнения.

Приведенные выше решения должны помочь вам устранить проблемы с запуском exe-файла при удалении программы в Inno Setup. Если у вас есть другие вопросы или проблемы, не стесняйтесь задавать их в комментариях ниже.

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

Устранение проблемы с запуском exe-файла во время удаления программы, созданной с помощью Inno Setup.


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

Получайте свежие новости и обновления по 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 16:01:53/0.0051097869873047/1