Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 1133
Благодарности: 581

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: 7z ISTask.7z
(30.2 Kb, 83 просмотров)

AnalogXP,
2-ой вопрос

Вам потребутся ISTask.dll, которую прикрепил к сообщению.
Пример использования ISTask.dll:
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Files]
Source: ISTask.dll; DestDir: {app}; Flags: ignoreversion
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion

[Run]
Filename: {app}\MyProg.exe; Description: Запустить программу MyProg?; Flags: postinstall nowait skipifsilent

; ниже поправьте название секции
[_Code]
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
  external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';

function KillTask(ExeFileName: string): Integer;
  external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usUninstall then
  if RunTask('MyProg.exe', false) then begin
    UninstallProgressForm.Visible := False;
    if MsgBox('Обнаружена запущенная программа MyProg. Завершить?', mbConfirmation, mb_yesno) = idyes then begin
      KillTask('MyProg.exe');
      UnloadDll(ExpandConstant('{app}\ISTask.dll'));
      UninstallProgressForm.Visible := True;
    end else begin
      MsgBox('Завершите работу программы MyProg, затем снова запустите программу удаления.', mbInformation, mb_ok);
      UnloadDll(ExpandConstant('{app}\ISTask.dll'));
      Abort;
    end;
  end else begin
    UnloadDll(ExpandConstant('{app}\ISTask.dll'));
  end;
end;

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:52, 02-04-2009 | #549