我已经创建了一个模块,导出了扩展名和后来我使用直接包文件上传安装它(在新店)。扩展按预期工作。
现在,我已经进行了一些更新,使用另一个发行版本号导出扩展名,但是当我尝试上传存档(在相同模式下)时出现错误( “CONNECT ERROR:Package文件无效[..]'。/ app / code / local / Smart2Pay / Globalpay / Block / Form / Pay.php'已存在“ )
我读到我可以更改一些downloader \ lib \ Mage \ Connect \ Validator.php文件(here)以允许文件覆盖,但我想知道是否还有其他最佳实践相关的解决方案。我需要此扩展程序更新才能适用于所有magento用户。
答案 0 :(得分:4)
正如Tim所说,安装更新版本的Magento扩展包的正确方法是首先在MagentoConnect Manager中运行卸载选项以删除旧扩展,然后运行安装选项以从较新的包文件进行安装。
不幸的是,这是MagentoConnect包管理器功能的(糟糕)设计。
它还值得解释扩展/包所做的任何数据库修改会发生什么。 Magento模块无法指定卸载脚本或说明。这意味着在卸载原始模块/包之后,任何数据库更改仍然存在且尚未删除。重新安装较新版本的模块时,应该触发模块的DB升级脚本而不是“安装脚本”。
所以发生的事情的详细分类如下:
最初从软件包安装模块时,将运行与config.xml中的模块版本对应的模块最新安装脚本,从而进行必要的数据库更改。
当从MagentoConnect管理器取消该模块时,数据库保持原样,因此模块所做的所有更改仍然存在于数据库中。
安装较新版本的模块后,Magento数据库core_resource表会告诉安装程序先前安装了哪个版本的模块。先前版本和新版本号用于在模块代码中查找适用的数据库升级脚本。如果找到了相应的升级脚本,则会运行该脚本。