Скрипты Inno Setup. Помощь и советы [часть 6]

Ответить
 • Просмотры: 53
Аватара пользователя
habib2302

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение habib2302 »

saurn, оригинальный установщик написан на inno setup на версии 5.5.3

помоги с ошибкой в этом скрипте



Код:

Код: Выделить всё

[CustomMessages]
Russian.Msg2=Удалить настройки программы находящиеся по адресу:
English.Msg2=Delete the program settings are at:
Ukrainian.Msg2=Видалити налаштування програми знаходяться за адресою:
Russian.Msg3=Удаление настроек
English.Msg3=Removal options
Ukrainian.Msg3=Видалення налаштувань
[code ]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
    case CurUninstallStep of
        usPostUninstall:
        if DirExists(AddBackslash(ExpandConstant('{userappdata}')) + 'Atomic Alarm Clock 6') then
        begin
            if MsgBoxEx(0, (CustomMessage('Msg2') + #13#13 + AddQuotes(AddBackslash(ExpandConstant('{userappdata}')) + 'Atomic Alarm Clock 6')), (CustomMessage('Msg3'), $00000004 or $00000020, 0, 0) = IDYES then
            DelTree(AddBackslash(ExpandConstant('{userappdata}')) + 'Atomic Alarm Clock 6', True, True, True);
        end;
    end;
end;

Аватара пользователя
vint56

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение vint56 »

Цитата habib2302:



помоги с ошибкой в этом скрипте
Скрипты Inno Setup. Помощь и советы [часть 6]




Куча лишних скобок была.



Код:

Код: Выделить всё

[code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
    case CurUninstallStep of
        usPostUninstall:
        if DirExists(AddBackslash(ExpandConstant('{userappdata}')) + 'Atomic Alarm Clock 6') then
        begin
            if MsgBoxEx(0, CustomMessage('Msg2') + #13#13 + AddQuotes(AddBackslash(ExpandConstant('{userappdata}')) + 'Atomic Alarm Clock 6'), CustomMessage('Msg3'), $00000004 or $00000020, 0, 0) = IDYES then
            DelTree(AddBackslash(ExpandConstant('{userappdata}')) + 'Atomic Alarm Clock 6', True, True, True);
        end;
    end;
end;
Аватара пользователя
Антон_Мураткин@vk

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Антон_Мураткин@vk »

vint56, Благодарю! Но почему то только всё это на первой страницы находится. А мне надо что бы кнопки были так же как на стандартном сетапе (инсталяторе) Есть кнопки стандартные а мне надо же такие только ещё и в другом месте
Аватара пользователя
Nordek

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Nordek »

Цитата habib2302:



как сделать так, чтобы процесс был завершен до удаления приложения?скрипт из шапки он завершает процесс до установки
Скрипты Inno Setup. Помощь и советы [часть 6]




В оригинальном скрипте функция TerminateApp(...) вызывается в процедуре InitializeWizard, то есть в момент инициализации мастера установки. В вашем случае логичным будет вызывать ее, функцию, в момент инициализации удаления - в функции InitializeUninstall или в InitializeUninstallProgressForm.
Аватара пользователя
Nordek

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Nordek »

скрипт на завершение процесса не работает и как решить проблему со скриптом на удаление др. версий приложения при старте.
Аватара пользователя
vint56

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение vint56 »

Цитата habib2302:



как сделать так, чтобы процесс был завершен до удаления приложения?
Скрипты Inno Setup. Помощь и советы [часть 6]





Справка: Inno Setup Faq. На этапе деинсталляции убить процесс




Код:

Код: Выделить всё

[Files]
Source: ISTask.dll; DestDir: {app}; Flags: ignoreversion
[Code]
// функции используемые при деинсталляции
// RunTask@{app}\ISTask.dll - название функции (в данном случае, если программа работает)
// и путь dll'ки где она расположена...
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('winamp.exe', False) then
    begin
      // прячем форму
      UninstallProgressForm.Visible:= False;
      if MsgBox('Программа winamp.exe используется. Закрыть и продолжить удаление?', mbConfirmation, MB_YESNO) = IDYES then
        begin
          KillTask('winamp.exe');
          UnloadDll(ExpandConstant('{app}\ISTask.dll'));
          // показываем форму
          UninstallProgressForm.Visible:= True;
        end
      else
        begin
          MsgBox('Завершите работу winamp.exe, затем снова запустите программу удаления.', mbInformation, MB_OK);
          UnloadDll(ExpandConstant('{app}\ISTask.dll'));
          Abort;
        end;
    end;
end;
Аватара пользователя
habib2302

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение habib2302 »

Доброе время суток. Я использую скрипт для закрепеня ярлыков на панель быстрого запуска win 7. И имя ярлыка получается корявое

Изображение
Аватара пользователя
Mat_y

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Mat_y »

Цитата habib2302:



тоже не работает
Скрипты Inno Setup. Помощь и советы [часть 6]




Что значит не работает?

А в



Код:

Код: Выделить всё

  if RunTask('winamp.exe', False) then



Код:

Код: Выделить всё

          KillTask('winamp.exe');

вместо winamp.exe свой exe-шник прописывал (т.е завершаемый процесс)?



Учти, срабатывает после того как кликнешь деинсталлировать. Потом соглашаешься нажатием кнопки "Да" и только тогда выскочит диалог о завершении процесса.
Аватара пользователя
Mat_y

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Mat_y »

У меня еще один вопрос, а как прописать правило, чтобы при удалении программы в реестре ничего не трогалось.
Аватара пользователя
El Sanchez

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение El Sanchez »

habib2302 если ты компилируеш проэкт на unicode он работать не будет IsTask работает только в ansi версий
Ответить

Вернуться в «Автоматическая установка приложений»