Skip to content

Commit

Permalink
option to disable transacted filesystems
Browse files Browse the repository at this point in the history
in some situations the transacted filesystem operations do not work

add an option that disables all transacted filesystem operations
  • Loading branch information
lukhase committed Jun 14, 2020
1 parent 29b4613 commit 2cbb8b4
Show file tree
Hide file tree
Showing 8 changed files with 16 additions and 3 deletions.
2 changes: 2 additions & 0 deletions PackageManager/L3dPackageInstaller/DBHelper.cpp
Expand Up @@ -40,6 +40,8 @@ namespace packageinstaller
const std::wstring DBHelper::PREF_DEINSTALL_ALWAYS_ASK = L"DEINSTALL_ALWAYS_ASK";
const std::wstring DBHelper::PREF_ALLOW_UNDO = L"DEINSTALL_ALLOW_UNDO";

const std::wstring DBHelper::PREF_DISABLE_TRANSACTIONS = L"DISABLE_TRANSACTIONS";

DBHelper::DBHelper(void) : newDbCreated(false)
{
}
Expand Down
1 change: 1 addition & 0 deletions PackageManager/L3dPackageInstaller/DBHelper.h
Expand Up @@ -94,6 +94,7 @@ class DBHelper
static const std::wstring PREF_INSTALL_ONLY_OLDER;
static const std::wstring PREF_DEINSTALL_ALWAYS_ASK;
static const std::wstring PREF_ALLOW_UNDO;
static const std::wstring PREF_DISABLE_TRANSACTIONS;

protected:
DBHelper(void);
Expand Down
4 changes: 3 additions & 1 deletion PackageManager/L3dPackageInstaller/DlgPackageInstall.cpp
Expand Up @@ -28,10 +28,12 @@ using namespace std;
using namespace db;

DlgPackageInstall::DlgPackageInstall(const std::wstring& l3dPath, const std::vector<std::wstring>& packagesToInstall) :
curListSel(-1), installationStarted(false), installManager(new InstallManager(l3dPath)), hListPackages(nullptr),
curListSel(-1), installationStarted(false), hListPackages(nullptr),
dropTarget{ { L".zip", L".l3dpack" } }, argPackagesToInstall(packagesToInstall)

{
bool disableTransactions = DBHelper::instance().GetPreferenceValue(DBHelper::PREF_DISABLE_TRANSACTIONS, false);
installManager = std::make_unique<InstallManager>(l3dPath, disableTransactions);
dropTarget.SetOnDropNotify(this);
}

Expand Down
6 changes: 6 additions & 0 deletions PackageManager/L3dPackageInstaller/DlgSettings.cpp
Expand Up @@ -50,6 +50,9 @@ INT_PTR DlgSettings::OnInitDlg(WPARAM wParam, LPARAM lParam)
SendDlgItemMessage(GetHwnd(), IDC_SET_ALLOW_UNDO, BM_SETCHECK,
DBHelper::instance().GetPreferenceValue(DBHelper::PREF_ALLOW_UNDO, false) ? BST_CHECKED : BST_UNCHECKED, 0);

SendDlgItemMessage(GetHwnd(), IDC_USE_TRANSACTIONS, BM_SETCHECK,
DBHelper::instance().GetPreferenceValue(DBHelper::PREF_DISABLE_TRANSACTIONS, false) ? BST_UNCHECKED : BST_CHECKED, 0);

HWND cb = GetDlgItem(GetHwnd(), IDC_COMBOLANG);
ComboBox_AddString(cb, strTab.Load(IDS_LANG_DE));
ComboBox_AddString(cb, strTab.Load(IDS_LANG_EN));
Expand Down Expand Up @@ -90,6 +93,9 @@ INT_PTR DlgSettings::OnCommand(WPARAM wParam, LPARAM lParam)
DBHelper::instance().SetPreferenceValue(DBHelper::PREF_ALLOW_UNDO,
Button_GetCheck(GetDlgItem(GetHwnd(), IDC_SET_ALLOW_UNDO)) == BST_CHECKED);

DBHelper::instance().SetPreferenceValue(DBHelper::PREF_DISABLE_TRANSACTIONS,
Button_GetCheck(GetDlgItem(GetHwnd(), IDC_USE_TRANSACTIONS)) == BST_UNCHECKED);

int sel = ComboBox_GetCurSel(GetDlgItem(GetHwnd(), IDC_COMBOLANG));
wchar_t *lang = nullptr;
if (sel == 0)
Expand Down
3 changes: 2 additions & 1 deletion PackageManager/L3dPackageInstaller/InstallManager.cpp
Expand Up @@ -31,7 +31,8 @@ namespace l3d
using namespace Kompex;
using namespace l3d::packageinstaller::fs;

InstallManager::InstallManager(const std::wstring& loksimPath) :
InstallManager::InstallManager(const std::wstring& loksimPath, bool disableTransactions) :
transactFs(NULL, 0, NULL, NULL, !disableTransactions),
l3dPath(loksimPath), replaceOnlyOlder(true), alwaysAskBeforeOverwrite(false), installState(InstallPreparing), cntTotalFiles(0), cancelled(false), dbAgent(loksimPath), installInfoLock()
{
usedTransactions = transactFs.UseTransactedFunctions();
Expand Down
2 changes: 1 addition & 1 deletion PackageManager/L3dPackageInstaller/InstallManager.h
Expand Up @@ -44,7 +44,7 @@ class InstallManager
InstallPreparing, InstallRunning, InstallPassOneFinished, InstallPassTwoRunning, InstallSuccessfullyFinished, InstallErrorOccurred, InstallCancelled
};
public:
InstallManager(const std::wstring& loksimPath);
InstallManager(const std::wstring& loksimPath, bool disableTransactions = false);
~InstallManager(void);

/**
Expand Down
Binary file modified PackageManager/L3dPackageInstaller/L3dPackageInstaller.rc
Binary file not shown.
1 change: 1 addition & 0 deletions PackageManager/L3dPackageInstaller/Resource.h
Expand Up @@ -172,3 +172,4 @@
#define IDS_NO 40068
#define IDS_EXPORTLISTTIMEPKG 40069
#define IDS_EXPORTLISTTIMEFS 40070
#define IDC_USE_TRANSACTIONS 40071

0 comments on commit 2cbb8b4

Please sign in to comment.