4040 */
4141namespace OC ;
4242
43+ use OC \App \AppManager ;
4344use OC \DB \Connection ;
4445use OC \DB \MigrationService ;
4546use OC \Hooks \BasicEmitter ;
4647use OC \IntegrityCheck \Checker ;
4748use OC_App ;
49+ use OCP \App \IAppManager ;
4850use OCP \IConfig ;
4951use OCP \ILogger ;
5052use OCP \Util ;
@@ -264,9 +266,12 @@ private function doUpgrade(string $currentVersion, string $installedVersion): vo
264266 // Update the appfetchers version so it downloads the correct list from the appstore
265267 \OC ::$ server ->getAppFetcher ()->setVersion ($ currentVersion );
266268
269+ /** @var IAppManager|AppManager $appManager */
270+ $ appManager = \OC ::$ server ->getAppManager ();
271+
267272 // upgrade appstore apps
268- $ this ->upgradeAppStoreApps (\ OC :: $ server -> getAppManager () ->getInstalledApps ());
269- $ autoDisabledApps = \ OC :: $ server -> getAppManager () ->getAutoDisabledApps ();
273+ $ this ->upgradeAppStoreApps ($ appManager ->getInstalledApps ());
274+ $ autoDisabledApps = $ appManager ->getAutoDisabledApps ();
270275 $ this ->upgradeAppStoreApps ($ autoDisabledApps , true );
271276
272277 // install new shipped apps on upgrade
@@ -414,7 +419,7 @@ private function isCodeUpgrade(): bool {
414419 * @throws \Exception
415420 */
416421 private function upgradeAppStoreApps (array $ disabledApps , bool $ reenable = false ): void {
417- foreach ($ disabledApps as $ app ) {
422+ foreach ($ disabledApps as $ app => $ previousEnableSetting ) {
418423 try {
419424 $ this ->emit ('\OC\Updater ' , 'checkAppStoreAppBefore ' , [$ app ]);
420425 if ($ this ->installer ->isUpdateAvailable ($ app )) {
@@ -425,7 +430,11 @@ private function upgradeAppStoreApps(array $disabledApps, bool $reenable = false
425430
426431 if ($ reenable ) {
427432 $ ocApp = new \OC_App ();
428- $ ocApp ->enable ($ app );
433+ if (!empty ($ previousEnableSetting )) {
434+ $ ocApp ->enable ($ app , $ previousEnableSetting );
435+ } else {
436+ $ ocApp ->enable ($ app );
437+ }
429438 }
430439 } catch (\Exception $ ex ) {
431440 $ this ->log ->error ($ ex ->getMessage (), [
0 commit comments