我们使用 Inno Setup(版本 5.4.2)作为打包工具来生成我们的安装程序。在将我们的软件从旧版本升级到当前版本时,我们会尝试覆盖现有的二进制文件/驱动程序。这通常会导致问题,因为某些监控软件(如“HP ArcSight Logger/Connector”、“SplunkUniversalForwarder”等)在我们的二进制文件中保存文件句柄并导致覆盖失败。我们的安装程序每次遇到此问题时都会显示以下弹出消息。
"C:\Windows\System32\drivers\xxx.sys
尝试替换现有文件时出错:DeleteFile failed;代码 5. 访问被拒绝。
单击 Retry 重试,Ignore 跳过此文件(不推荐),或 Abort 取消安装”
有趣的是,即使在上述弹出窗口之后,我们也能够手动将 xxx.sys 重命名为 xxx.sys.old。我们曾经建议客户将 xxx.sys 重命名为 xxx.sys.old 并“重试”安装。重命名后,升级用于完成没有任何问题。
问题
1)当我们遇到这个问题时,是否可以通过程序重命名 xxx.sys。
2) 任何重现 DeleteFile 的过程都失败了;代码5问题?