【问题标题】:Update magento extension using direct package file upload - file already exists使用直接包文件上传更新 magento 扩展 - 文件已存在
【发布时间】:2012-11-19 21:00:05
【问题描述】:

我创建了一个模块,导出了扩展程序,然后我使用直接包文件上传安装了它(在新商店中)。扩展按预期工作。

现在,我进行了一些更新,使用另一个发布版本号导出了扩展,但是当我尝试上传存档(在相同模式下)时,我收到一个错误(“CONNECT ERROR: Package文件无效 [..] './app/code/local/Smart2Pay/Globalpay/Block/Form/Pay.php' 已存在")

我读到我可以更改一些 downloader\lib\Mage\Connect\Validator.php 文件 (here) 以允许文件覆盖,但我想知道是否有任何其他与最佳实践相关的解决方案。我需要此扩展更新以适用于所有 magento 用户。

【问题讨论】:

  • 尝试先卸载扩展,然后安装新的。在 MagentoConnect Manager 的列表中有一个卸载扩展的选项。
  • 谢谢,蒂姆!我也想到了这一点,但正如我所说,我想让所有 magento 用户的安装/升级变得简单而自然。

标签: magento updates


【解决方案1】:

就像 Tim 所说,安装较新版本的 Magento 扩展包的正确方法是首先在 MagentoConnect Manager 中运行卸载选项以删除旧扩展,然后运行安装选项以从较新的包文件进行安装。

不幸的是,这是 MagentoConnect 包管理器功能的(糟糕的)设计。

还值得解释扩展/包所做的任何数据库修改会发生什么。 Magento 模块无法指定卸载脚本或指令。这意味着在卸载原始模块/包后,任何数据库更改仍然存在并且没有被删除。当重新安装较新版本的模块时,这应该会触发模块的数据库升级脚本而不是它的安装脚本来运行。

所以发生的事情的详细分类如下:

  1. 当最初从包中安装模块时,会运行 config.xml 中模块版本对应的模块最新安装脚本,进行必要的数据库更改。

  2. 当模块从 MagentoConnect 管理器中卸载时,数据库保持原样,因此模块所做的所有更改仍然存在于数据库中。

  3. 当安装了较新版本的模块时,Magento 数据库 core_resource 表会告诉安装程序之前安装了哪个版本的模块。旧版本号和新版本号用于在模块代码中查找适用的数据库升级脚本。如果找到相应的升级脚本,则运行它。

【讨论】:

  • 该死的糟透了...花了很长时间才找到这个线程,所以我在stackoverflow上开始了另一个,但还没有人回答。希望一个月前我在寻找哈哈的时候能找到这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-03
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 2015-01-03
  • 2014-09-13
  • 2011-12-02
相关资源
最近更新 更多