Ветеран
Сообщения: 1133
Благодарности: 581
|
Профиль
|
Отправить PM
| Цитировать
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
|