Методы автозапуска - PullRequest
       9

Методы автозапуска

0 голосов
/ 10 августа 2009

Я использую NSIS для создания установщика.

1. Мне нужно просто выполнить настройку Mysql на первом шаге

2. И позже, после успешного выполнения шага 1 (который устанавливает mysql в системе), мне нужно выполнить сценарии базы данных.

3. Теперь мне нужно запустить myproj.exe

Здесь проблема в том, что установщик напрямую выполняет все шаги параллельно. Но я должен запускать их шаг за шагом и только после успешного выполнения предыдущих шагов.

Спасибо, Шринивас.

Ответы [ 2 ]

0 голосов
/ 09 ноября 2010

Я не знаю много о NSIS, но у нас есть скрипт установки, который вызывает исполняемые файлы с ExecWait:

ExecWait "msiexec /passive /liare+ ${SETUP_LOG_FILE} -i $TEMP\MyMsi.msi" $R0

Может быть, это то, что вы должны использовать. Вот Краткое руководство по NSIS .

0 голосов
/ 10 августа 2009

Я действительно не уверен, как ваш установщик работает параллельно. NSIS выполняет команды последовательно. Если вы не станете слишком долго использовать команды, которые я никогда не видел, чтобы заставить NSIS работать параллельно, он ничего не выполняет параллельно. Можете ли вы опубликовать часть исходного кода вашего установщика, чтобы я мог видеть, как вы это делаете?

Вы можете использовать команду nsExec :: ExecToStack, чтобы запустить установку MySql и получить код возврата от установщика, например:

!include LogicLib.nsh    
StrCpy $myReturnCode "0"
nsExec::ExecToStack "$TEMP\MySqlSetup.exe"
Pop $myReturnCode
${If} "$myReturnCode" == ""
${OrIf} "$myReturnCode" == "0"
    // Presumably it worked, continue with installation
${Else}
    // Error, don't continue with installation
${EndIf}

Обратите внимание, что nsExec :: ExecToStack будет ожидать возврата исполняемого файла перед выполнением следующей команды NSIS.

...