Самостоятельно обновляемый скрипт Powershell - PullRequest
2 голосов
/ 12 апреля 2011

Каков наилучший способ иметь самообновляющийся (из SVN) скрипт Powershell?

Он должен иметь возможность запустить новый процесс и затем вызвать SVN update $script; './$script', убедившись, что текущий процесс имеетзакончился.

if ((svn st -u --quiet $script) -match "\*"){
     $scriptToRun = 'SVN update $script; "./$script"'
     ##start new process that will end this process and execute $scriptToRun
}

Ответы [ 3 ]

3 голосов
/ 21 апреля 2011

Я думал, что это сработает, даже если немного наивно. У вас есть два сценария - StartApp.ps1, которые выполняют все необходимые проверки обновлений. После запуска он затем связывает MainApp.ps1, что само приложение, вот что будет обновляться.

StartApp.ps1 - запускает приложение, но также выполняет проверку обновления:

# Bootstrap app
#
# Check for updates here

if(some_check_to_determine_if_update_required)
{
    # Execute whatever external source control commands required but wait until 
    # done:
    Start-Process -Wait -FilePath "<path_to_svn>" -ArgumentList <args_you_need>
}

# Launch the (now possibly updated) app
.\MainApp.ps1
1 голос
/ 12 апреля 2011

Я не уверен, что это хорошая идея, чтобы само обновление скрипта. Вы можете попытаться сделать это из планировщика задач или, если скрипт должен это сделать, разбить его на 2 части, первая из которых выполняется пользователем. Держите это маленьким и простым. Вторая часть - это то, что вы обновляете из SVN, и оно должно выполнять основную часть работы.

Небольшой пользовательский скрипт, который обрабатывает аргументы и автообновление. Вторая часть, которая выполняет основную часть работы и автоматически обновляется.

0 голосов
/ 16 августа 2015

1) Проверьте, требуется ли обновление. Остановитесь, если не нужно.

2) Переименуйте файл исполняемого скрипта.

3) Скопировать обновленный скрипт в оригинальное имя

4) ПРОВЕРЬТЕ копию. размер, контрольная сумма, что-то. У вас все еще есть шанс выздороветь здесь.

5) Запустите новый скрипт и выйдите из него.

Возможно, вам придется выяснить повышение прав, если вам нужны права администратора для перезаписи сценария. Если вы всегда работаете с повышенными привилегиями, это не должно иметь значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...