diff --git a/src/apps.js b/src/apps.js index f49d4fe1a..7b9be83c4 100644 --- a/src/apps.js +++ b/src/apps.js @@ -673,8 +673,9 @@ function autoupdateApps(updateInfo, callback) { // updateInfo is { appId -> { ma }, callback); } -function backupApp(app, callback) { +function backupApp(app, addonsToBackup, callback) { assert.strictEqual(typeof app, 'object'); + assert.strictEqual(typeof addonsToBackup, 'object'); assert.strictEqual(typeof callback, 'function'); function canBackupApp(app) { @@ -708,7 +709,7 @@ function backupApp(app, callback) { async.series([ ignoreError(shell.sudo.bind(null, 'mountSwap', [ BACKUP_SWAP_CMD, '--on' ])), - addons.backupAddons.bind(null, app, app.manifest.addons), + addons.backupAddons.bind(null, app, addonsToBackup), shell.sudo.bind(null, 'backupApp', [ BACKUP_APP_CMD, app.id, result.url, result.backupKey ]), ignoreError(shell.sudo.bind(null, 'unmountSwap', [ BACKUP_SWAP_CMD, '--off' ])), ], function (error) { @@ -744,8 +745,9 @@ function backup(appId, callback) { }); } -function restoreApp(app, callback) { +function restoreApp(app, addonsToRestore, callback) { assert.strictEqual(typeof app, 'object'); + assert.strictEqual(typeof addonsToRestore, 'object'); assert.strictEqual(typeof callback, 'function'); assert(app.lastBackupId); @@ -758,7 +760,7 @@ function restoreApp(app, callback) { shell.sudo('restoreApp', [ RESTORE_APP_CMD, app.id, result.url, result.backupKey ], function (error) { if (error) return callback(new AppsError(AppsError.INTERNAL_ERROR, error)); - addons.restoreAddons(app, app.manifest.addons, callback); + addons.restoreAddons(app, addonsToRestore, callback); }); }); } diff --git a/src/apptask.js b/src/apptask.js index d1d999295..fe1e3d72f 100644 --- a/src/apptask.js +++ b/src/apptask.js @@ -586,7 +586,7 @@ function install(app, callback) { function backup(app, callback) { async.series([ updateApp.bind(null, app, { installationProgress: '10, Backing up' }), - apps.backupApp.bind(null, app), + apps.backupApp.bind(null, app, app.manifest.addons), // done! function (callback) { @@ -639,7 +639,7 @@ function restore(app, callback) { createVolume.bind(null, app), updateApp.bind(null, app, { installationProgress: '70, Download backup and restore addons' }), - apps.restoreApp.bind(null, app), + apps.restoreApp.bind(null, app, app.manifest.addons), updateApp.bind(null, app, { installationProgress: '75, Creating container' }), createContainer.bind(null, app), @@ -746,7 +746,7 @@ function update(app, callback) { updateApp.bind(null, app, { installationProgress: '10, Backup app' }), function (done) { - apps.backupApp(app, function (error) { + apps.backupApp(app, app.oldConfig.manifest.addons, function (error) { if (error) error.backupError = true; done(error); }); diff --git a/src/cloudron.js b/src/cloudron.js index 30df982ed..6bb3ca6ce 100644 --- a/src/cloudron.js +++ b/src/cloudron.js @@ -590,7 +590,7 @@ function backupBoxAndApps(callback) { async.mapSeries(allApps, function iterator(app, iteratorCallback) { ++processed; - apps.backupApp(app, function (error, backupId) { + apps.backupApp(app, app.manifest.addons, function (error, backupId) { progress.set(progress.BACKUP, step * processed, app.location); if (error && error.reason === AppsError.BAD_STATE) {