8

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

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

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

在替换可执行文件方面与 Win32 上的行为会system()有所不同吗?exec()在 Linux 上,它按设计工作。

4

1 回答 1

1

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

于 2013-08-20T06:43:17.810 回答