Windows脚本自动更新用exec替换当前可执行文件?

时间:2013-06-03 16:17:51

标签: windows perl exec cpan strawberry-perl

我正在尝试在Perl Windows中构建一个快速自动更新程序。我注意到,当我调用cpanp来安装软件包的更新时,由于脚本当前正在运行,因此无法安装新版本的脚本。我目前正在使用cpanp致电CORE::system()。如果我使用cpanp调用exec()会释放可执行文件以进行替换吗?或者,即使执行已完全转移到cpanp

,Windows是否仍然保持捆绑

目前,我的流程看起来像这样,

  1. 从服务器
  2. 下载META.yml
  3. 解析META.yml的版本
  4. 与当前$VERSION比较
    • 如果当前版本较低,请使用META.yml中的数据生成版本字符串
      1. 使用META.yml的主机/路径和版本/数据信息生成要打包的URL
      2. 通知用户更新
      3. Spawn cpanp以URL运行更新。
    • 如果当前版本相同
      1. 什么都不做
  5. 在替换可执行文件时,system()在Win32上的行为会不同于exec()吗?在Linux上它按设计工作。

1 个答案:

答案 0 :(得分:1)

我刚试过它。 exec在Linux和Win32上都能正常工作。 See this page for portability info on Perl