mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-10 12:03:25 -08:00
[Installer][Client] Fix stale backup resurrection, batch session backups, extend coverage
NSIS: clear stale %TEMP% backup and only arm restore when something was copied, directory-existence checks, back up loose .dec decks, drop downloaded pics but keep pics\CUSTOM. Helper: single session dir per run (ms timestamps), same-basename disambiguation, partial copies still report their location.
This commit is contained in:
parent
d33542db59
commit
bb5f17b876
5 changed files with 312 additions and 42 deletions
|
|
@ -17,6 +17,7 @@
|
|||
#define USER_DATA_BACKUP_H
|
||||
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
|
||||
namespace UserDataBackup
|
||||
{
|
||||
|
|
@ -24,18 +25,45 @@ namespace UserDataBackup
|
|||
/**
|
||||
* @brief Recursively copies @p sourceDir into @p destDir, creating it as needed.
|
||||
* @returns true when every file was copied (or there was nothing to copy).
|
||||
* Symlinks are copied best-effort via QFile::copy; a dangling link fails that entry only.
|
||||
*/
|
||||
bool copyDirectoryRecursively(const QString &sourceDir, const QString &destDir);
|
||||
|
||||
/**
|
||||
* @brief Creates a fresh timestamped session directory under @p backupRoot.
|
||||
* @param backupRoot directory OUTSIDE the install tree that will hold timestamped backups.
|
||||
* @param sessionDirOut receives the created directory on success.
|
||||
* @returns true on success. Millisecond timestamps plus a numeric suffix keep rapid
|
||||
* successive calls (e.g. one per installer phase) from sharing a directory.
|
||||
*/
|
||||
bool createBackupSessionDir(const QString &backupRoot, QString *sessionDirOut);
|
||||
|
||||
/**
|
||||
* @brief Copies an at-risk path (file or directory) to a timestamped folder under @p backupRoot.
|
||||
* @param sourcePath file or directory holding user data (must exist).
|
||||
* @param backupRoot directory OUTSIDE the install tree that will hold timestamped backups.
|
||||
* @param backupLocationOut receives the created backup file or directory on success.
|
||||
* @returns true on success, false when the source is missing or nothing could be copied.
|
||||
* @param backupLocationOut receives the created backup file or directory whenever a target
|
||||
* was created, even when the copy was only partial (i.e. also on failure with a partial copy).
|
||||
* @returns true when the whole source was copied, false when the source is missing or
|
||||
* any entry failed. A false return with a non-empty @p backupLocationOut means a partial
|
||||
* backup exists at that location.
|
||||
*/
|
||||
bool backupAtRiskPath(const QString &sourcePath, const QString &backupRoot, QString *backupLocationOut = nullptr);
|
||||
|
||||
/**
|
||||
* @brief Copies several at-risk paths into a single timestamped session directory.
|
||||
* @param sourcePaths files or directories holding user data; missing entries are skipped.
|
||||
* @param backupRoot directory OUTSIDE the install tree that will hold timestamped backups.
|
||||
* @param backupLocationsOut receives one entry per source that produced a backup target
|
||||
* (including partial copies).
|
||||
* @param sessionDirOut optionally receives the shared session directory.
|
||||
* @returns true when every existing source was copied completely.
|
||||
*/
|
||||
bool backupAtRiskPaths(const QStringList &sourcePaths,
|
||||
const QString &backupRoot,
|
||||
QStringList *backupLocationsOut,
|
||||
QString *sessionDirOut = nullptr);
|
||||
|
||||
/**
|
||||
* @brief Default backup root guaranteed to live outside the install directory.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue