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

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

Пользователь


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

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


Цитата Serega:
можно через код...
Старый вопрос... а как?

Как "тихо" запустить определённый exe-шник, копируемый в папку установки, сразу же после его успешного копирования и потом закрыть его "автоматом", или после распаковки всех файлов приложения, НО ДО ЗАВЕРШЕНИЯ УСТАНОВКИ?

Ничего "криминального" - этот "файл" является небольшой родной "утилиткой", которая собирает определённые сведения о системе и прописывает необходимые данные в реестр в ветку устанавливаемого приложения.
Если есть какой-нибудь другой способ, то тоже неплохо.

Пробовал в секции Run - сначала запустить этот файл, а потом, убить его с помощью батника, в котором прописано "taskkill /f /im MyProg.exe" - НЕ получается, прога запускается и висит, батник не запускается, пока прогу НЕ закроешь, а мне ведь и НАДО ЕЁ закрыть!!!
Если поставить флаг "nowait", то он действительно НЕ ждёт и не даёт файлу даже запуститься...

читать дальше »
Почему-то НЕ работает флаг "runhidden", он не скрывает окно приложения и даже НЕ сворачивает с флагом "runminimized".
Этот флаг работает только для скрытия консольных окон что ли? Их он скрывает без проблем.
Помогите, пожалуйста!!! Может через секцию Code как-то можно сделать?


Пробовал так, тоже не получилось:

читать дальше »
Код: Выделить весь код
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
  external 'RunTask@{app}\ISTask.dll stdcall delayload;

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

procedure CurStepChanged(CurStep: TSetupStep);
var
ResultCode:Integer;
begin
if CurStep = ssPostInstall then
begin
Exec(ExpandConstant('{app}\MyProg.exe'), '', ExpandConstant('{app}'), SW_Hide, ewWaitUntilTerminated, ResultCode);
  begin
    if RunTask('MyProg.exe', false) then
      KillTask('MyProg.exe');
    UnloadDll(ExpandConstant('{app}\ISTask.dll'));
  end;
end;


И так: Exec('taskkill', '/f /im MyProg.exe', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);

А также можно ли, чтобы данные в реестр вносились "в самом начале" или же "2 раза" или "по частям". Нужно, чтобы выбранный путь установки (папка назначения), внеслись в реестр ДО завершения установки.

Отправлено: 13:32, 11-02-2012 | #799