1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Автозапуск себя же

Тема в разделе "Inno Setup", создана пользователем Эмиль, 6 фев 2018.

  1. Новичок

    Регистрация:
    4 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Пол:
    Мужской
    1. При запуске дитсрибутива выполняется проверка установлена ли некая программа
    2. Если некая программа установлена - продолжается работа с дистрибутивом
    3. Если некая программа не установлена, начинается ее загрузка со стороннего ресурса и установка.
    4. На момент установки дистрибутив закрывается.
    5. Как после выполнения установки некой программы перезапустить дистрибутив автоматически?

    Попробовал: ShellExec ('', ExpandConstant('{srcexe}'), '','', SW_SHOWNORMAL, ewNoWait, ErrorCode);

    Не помогло чот
     
  2. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    110
    Симпатии:
    23
    Пол:
    Мужской
    Есть два варианта:
    1. Сформировать bat скрипт который запустит установку необходимых программ а затем снова запустит ваш установщик, и запустить его
    2. Установщик не закрывать а просто прятать окно используя ShowWindow(WizardForm.Handle, SW_HIDE) (возможно константу и функцию придется подключать, если не знаете как то напишите)
     
    Эмиль нравится это.
  3. Новичок

    Регистрация:
    4 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Пол:
    Мужской

    Окей) я сделал Батник.
    Я так понимаю его надо запилить в установщик
    Files
    Source: D:\Papka\set.bat; DestName: "set.bat"; Flags: dontcopy

    как теперь сделать так, чтобы в определённый момент установщик обратился к этому файлу?
     
  4. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    110
    Симпатии:
    23
    Пол:
    Мужской
    Можно в секции code згенерировать (со всеми путями) через SaveStringToFile:
    Код (Inno):
    SaveStringToFile(ExpandConstant('{app}\set.bat'), 'start /wait ' + ExpandConstant('{app}\command.exe parameters') + #13#10 + ExpandConstant('del {app}\command.exe parameters') + #13#10 + ExpandConstant('start {src}\setup.exe') + #13#10 + ExpandConstant('del {app}\set.bat'), True);
    а скрипт можно выполнить:
    Код (Inno):

    var
      ResultCode: Integer;
    begin
    Exec(ExpandConstant('{win}\System32\cmd.exe'), ExpandConstant('/C {app}\set.bat'), ExpandConstant('{app}\'), SW_SHOW, //(или SW_HIDE если хотите спрятать консольное окно)
        ewWaitUntilTerminated, ResultCode);
    end;
     
    Для доп. пз и скрипта не рекомендуется использовать директорию {tmp} так как:
    1. Эта директория удаляется после закрытия установщика
    2. Каждый раз при запуске будет создаватся временная директория с новым именем
    По этому рекомендую все это делать в какой нибуть другой папке (я взял {app} но пример тоже не очень удачный так как во время установки эта папка может изменится) и вручную прибрать за собой
     
    Последнее редактирование: 6 фев 2018
    Эмиль нравится это.
  5. Новичок

    Регистрация:
    4 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Пол:
    Мужской

    Сделал проще) Положил batНик рядом с самим Установщиком) в батнике написано Start установщик.exe
    а в код зашил шелэксек в определнный момент этого батника)
     

Поделиться этой страницей