На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ Inno Setup
Пожалуйста, выделяйте текст инсталлятора написанного на Inno Setup тегом [сode=ins] ... [/сode]. Для этого используйте кнопку [code=ins] в форме ответа или выпадающего списка, если нужно вставить код из другой программы.


Обязательно указывать:

  • Программу, используемую для создания инсталлятора.



Если в ходе решения проблемы возникли дополнительные вопросы, по возможности задаем их в той же теме.


Выразить свое отношение к модераторам раздела можно здесь: Profi, Fester
Модераторы: Fester
  
> Убить процесс перед удалением программы , Inno Setup
    Здравствуйте. Подскажите как можно убить процесс перед началом удаления программы? При старте программы у меня получилось сделать.
    ExpandedWrap disabled
      function InitializeSetup(): Boolean;
      begin
        If RunTask('Test.exe', false) then  
          begin                              
            if MsgBox('File Test.exe are using. Close this file and continue installing?', mbInformation, mb_YesNo) = idYes then
               begin                        
                 KillTask('Test.exe');      
                 Result:= True;
               end else                    
                Exit;                      
          end;
      Result:=True;
      end;

    Функция KillTask и RunTask взяты с библиотеки isxdl.dll. Но почему то такой же код только для удаления не работает
    ExpandedWrap disabled
      function InitializeUninstall(): Boolean;
      begin
         If RunTask('Test.exe', false) then  
          begin                              
            if MsgBox('File Test.exe are using. Close this file and continue uninstalling?', mbInformation, mb_YesNo) = idYes then
               begin                        
                 KillTask('Test.exe');      
                 Result:= True;
               end else                    
                Exit;                      
          end;
      Result:=True;
      end;
    Подскажите как можно убыть процесс перед удалением, и если пользователь выбрал "Нет" , отменить удаление.

    Ошибка была при загрузке загрузке длл.
    ExpandedWrap disabled
      function KillTask(ExeFileName: string): Integer;
      external 'KillTask@files:ISTask.dll stdcall delayload';
       
      function RunTask(FileName: string; bFullpath: Boolean): Boolean;
      external 'RunTask@files:ISTask.dll stdcall delayload';
    Но проблема так и не решилась. когда вместо files: я написал
    ExpandedWrap disabled
      function KillTask(ExeFileName: string): Integer;
      external 'KillTask@{app}\ISTask.dll stdcall delayload';
       
      function RunTask(FileName: string; bFullpath: Boolean): Boolean;
      external 'RunTask@{app}\ISTask.dll stdcall delayload';
    P.S. Библиотеку загрузил у каталог где установлена программа.
    ExpandedWrap disabled
      Source: ISTask.dll; DestDir: "{app}"
    Как решить эту проблему. Буду раз за любую помощь.

    Ошибка после изменений "An attempt was made to expand the "app" constant before it was inicialized"
    Сообщение отредактировано: Craft -
      А если так?
      ExpandedWrap disabled
        function KillTask(ExeFileName: string): Integer;
        external 'KillTask@files:ISTask.dll stdcall setuponly';
         
        function RunTask(FileName: string; bFullpath: Boolean): Boolean;
        external 'RunTask@files:ISTask.dll stdcall setuponly';
         
         
        function KillTask(ExeFileName: string): Integer;
        external 'KillTask@{app}\ISTask.dll stdcall uninstallonly';
         
        function RunTask(FileName: string; bFullpath: Boolean): Boolean;
        external 'RunTask@{app}\ISTask.dll stdcall uninstallonly';


      PS: В директории Inno Setup\Examples есть пример CodeDll.iss, посмотри его.
        Цитата Kray74 @
        А если так?
        ExpandedWrap disabled
          function KillTask(ExeFileName: string): Integer;
          external 'KillTask@files:ISTask.dll stdcall setuponly';
           
          function RunTask(FileName: string; bFullpath: Boolean): Boolean;
          external 'RunTask@files:ISTask.dll stdcall setuponly';
           
           
          function KillTask(ExeFileName: string): Integer;
          external 'KillTask@{app}\ISTask.dll stdcall uninstallonly';
           
          function RunTask(FileName: string; bFullpath: Boolean): Boolean;
          external 'RunTask@{app}\ISTask.dll stdcall uninstallonly';


        PS: В директории Inno Setup\Examples есть пример CodeDll.iss, посмотри его.

        Пишет дублирование функций. Я смотрел пример в CodeDll.iss. Я не могу придумать как сделать чтоб работало для удаления и перед установкой.
        ExpandedWrap disabled
          Source: ISTask.dll; DestDir: "{app}"
           
          function KillTask(ExeFileName: string): Integer;
          external 'KillTask@ISTask.dll stdcall setuponly';
        Код не работает
        ExpandedWrap disabled
          Source: ISTask.dll; DestDir: "{app}"
           
          function KillTask(ExeFileName: string): Integer;
          external 'KillTask@{app}\ISTask.dll stdcall setuponly';
        Тоже не работает. Почему то только работает первый вариант.
        ExpandedWrap disabled
          Source: ISTask.dll; DestDir: "{app}"
           
          function KillTask(ExeFileName: string): Integer;
          external 'KillTask@files:ISTask.dll stdcall delayload';
        Может будут какие то идеи по этому поводу.
          Цитата Craft @
          Я смотрел пример в CodeDll.iss

          ...и не заметил, что там показано как раз то, что тебе и нужно.
          ExpandedWrap disabled
            [Files]
            Source: ISTask.dll; DestDir: "{app}"
             
            [Code]
            function KillTask(ExeFileName: string): Integer;
            external 'KillTask@files:ISTask.dll stdcall setuponly';
                  
            function RunTask(FileName: string; bFullpath: Boolean): Boolean;
            external 'RunTask@files:ISTask.dll stdcall setuponly';
                  
                  
            function KillTaskU(ExeFileName: string): Integer;
            external 'KillTask@{app}\ISTask.dll stdcall uninstallonly';
                  
            function RunTaskU(FileName: string; bFullpath: Boolean): Boolean;
            external 'RunTask@{app}\ISTask.dll stdcall uninstallonly';

          Так дублирования не будет т.к. ф-ции для деинсталляции импортируются в скрипт под другим названием (с суффиксом U например).
            Цитата mitrich @
            Цитата Craft @
            Я смотрел пример в CodeDll.iss

            ...и не заметил, что там показано как раз то, что тебе и нужно.
            ExpandedWrap disabled
              [Files]
              Source: ISTask.dll; DestDir: "{app}"
               
              [Code]
              function KillTask(ExeFileName: string): Integer;
              external 'KillTask@files:ISTask.dll stdcall setuponly';
                    
              function RunTask(FileName: string; bFullpath: Boolean): Boolean;
              external 'RunTask@files:ISTask.dll stdcall setuponly';
                    
                    
              function KillTaskU(ExeFileName: string): Integer;
              external 'KillTask@{app}\ISTask.dll stdcall uninstallonly';
                    
              function RunTaskU(FileName: string; bFullpath: Boolean): Boolean;
              external 'RunTask@{app}\ISTask.dll stdcall uninstallonly';

            Так дублирования не будет т.к. ф-ции для деинсталляции импортируются в скрипт под другим названием (с суффиксом U например).

            Кстати так вчера и сделал ;) .
              Блин, я тоже просмотрел :(
                Подскажите где взять istask.dll? в папке innosetup его нет.
                  Уже и не помню, откуда я его скачал...
                  Прикреплённый файлПрикреплённый файлISTask.zip (36,3 Кбайт, скачиваний: 375)
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0382 ]   [ 17 queries used ]   [ Generated: 28.04.24, 17:35 GMT ]