diff --git a/application/admin/controller/Addon.php b/application/admin/controller/Addon.php index 560f51381dc1d6a0e8dbf58ab0b27170b8f5ad1a..f53a1a086b7bb272e1354f01090cfa2f2074d644 100644 --- a/application/admin/controller/Addon.php +++ b/application/admin/controller/Addon.php @@ -184,6 +184,17 @@ class Addon extends Backend try { Service::unzip($tmpName); @unlink($tmpFile); + // 兼容Mac本地打包的插件 + $isMacOsx = 0; + $fileInfo = $info->getInfo(); + $macOsxDir = $tmpAddonDir . '__MACOSX'; + $macOsxFileDir = $tmpAddonDir . substr($fileInfo['name'], 0, -4); + if (is_dir($macOsxDir) && is_dir($macOsxFileDir)) { + $tmpAddonDirBak = $tmpAddonDir; + $isMacOsx = 1; + $tmpAddonDir = $macOsxFileDir . DS; + } + $infoFile = $tmpAddonDir . 'info.ini'; if (!is_file($infoFile)) { throw new Exception(__('Addon info file was not found')); @@ -202,6 +213,11 @@ class Addon extends Backend //重命名插件文件夹 rename($tmpAddonDir, $newAddonDir); + // 如果是Mac,需要删除多于文件夹 + if ($isMacOsx) { + @rmdirs($tmpAddonDirBak); + } + try { //默认禁用该插件 $info = get_addon_info($name);