【问题标题】:Windows script auto-update replacing current executable with exec?Windows脚本自动更新用exec替换当前可执行文件?
【发布时间】:2013-05-29 20:55:51
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你说的是 Perl 可执行文件吗?

标签: windows perl exec cpan strawberry-perl


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2018-03-03
    相关资源
    最近更新 更多