【发布时间】:2013-05-29 20:55:51
【问题描述】:
我正在尝试在 Perl Windows 中构建一个快速的自动更新程序。我注意到,当我调用cpanp 来安装软件包的更新时,它无法安装新版本的脚本,因为脚本当前正在运行。我目前正在用CORE::system() 打电话给cpanp。如果我用exec() 调用cpanp 会释放可执行文件以进行替换吗?或者,即使执行已完全移交给cpanp,Windows 是否仍将其捆绑?
目前,我的流程看起来像这样,
- 从服务器下载META.yml
- 解析出 META.yml 的版本
- 对比当前
$VERSION- 如果当前版本较低,则使用 META.yml 中的数据生成版本字符串
- 使用 META.yml 的主机/路径和版本/数据信息生成打包的 URL
- 通知用户更新
- 生成
cpanp以使用 URL 运行更新。
- 如果当前版本相同
- 什么都不做
- 如果当前版本较低,则使用 META.yml 中的数据生成版本字符串
在替换可执行文件方面,system() 在 Win32 上的行为是否与 exec() 不同?在 Linux 上,它按设计工作。
【问题讨论】:
-
你说的是 Perl 可执行文件吗?
标签: windows perl exec cpan strawberry-perl