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

Eva*_*oll 8 windows perl cpan exec strawberry-perl

我正在尝试在Perl Windows中构建一个快速自动更新程序.我注意到当我打电话cpanp来安装软件包的更新时,它无法安装新版本的脚本,因为脚本当前正在运行.我打电话cpanpCORE::system()目前.如果我打电话cpanp,那exec()会释放可执行文件进行替换吗?或者,即使执行已被完全转移,Windows是否仍然保持捆绑cpanp

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

  1. 从服务器下载META.yml
  2. 解析META.yml的版本
  3. 与当前比较 $VERSION
    • 如果当前版本较低,请使用META.yml中的数据生成版本字符串
      1. 使用META.yml的主机/路径和版本/数据信息生成要打包的URL
      2. 通知用户更新
      3. Spawn cpanp以使用URL运行更新.
    • 如果当前版本相同
      1. 没做什么

system()不同的表现比exec()在Win32关于更换可执行的?在Linux上它按设计工作.

Fra*_*ozo 1

我刚刚测试过。exec在 Linux 和 Win32 上都能正常工作。有关 Perl 的可移植性信息,请参阅此页