自我更新Powershell脚本

时间:2011-04-12 15:01:57

标签: svn powershell powershell-v2.0

自我更新(来自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 个答案:

答案 0 :(得分:3)

我认为这会成功,即使有点天真。您有两个脚本 - 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 :(得分:1)

我不确定自己更新脚本是个好主意。您可以尝试从任务计划程序执行此操作,或者如果脚本必须执行此操作,则将其分为两部分,第一部分是用户运行的部分。保持这个小而简单。第二部分是你从svn更新的内容,它应该完成大部分工作。

基本上处理参数和自动更新的小用户脚本。第二部分完成大部分工作并获得自动更新。

答案 2 :(得分:0)

1)测试是否需要更新。如果不需要就停止。

2)重命名执行的脚本文件。

3)将更新的脚本复制到原始名称

4)验证副本。大小,校验和,东西。你还有机会在这里恢复。

5)执行新脚本并退出运行。

如果您需要管理员权限来覆盖脚本,则可能需要计算高程。如果您始终使用提升的权限运行,则无关紧要。