public void Execute()
        {
            if (!_app.IsStaged)
            {
                throw new InvalidOperationException("Application isn't staged. Can't install.");
            }

            bool firstInstall = !_app.IsInstalled;

            if (firstInstall)
            {
                _hookExecutor.ExecuteFirstInstall();
            }

            _hookExecutor.ExecutePreInstall();
            _app.BackupAndInstall();
            _hookExecutor.ExecutePostInstall();

            if (firstInstall)
            {
                _hookExecutor.ExecuteFirstPostInstall();
            }
        }