Skip to content

Commit

Permalink
1.12.4
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidXanatos committed Dec 3, 2023
1 parent 8222b62 commit 0ab9c47
Show file tree
Hide file tree
Showing 5 changed files with 82 additions and 31 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### Fixed
- fixed running sandboxed processes located in a imdisk volume [#3472](https://github.com/sandboxie-plus/Sandboxie/discussions/3472)

### Changed
- without an active, non expired, supporter certificate, automatic updates/downloads are not longer available for the stable channel
- the autoamtic updater will still work and notify about new stable releases, the user will be guided to visit the download page and download the latest installer manually



## [1.12.3 / 5.67.3] - 2023-12-02
Expand Down
27 changes: 17 additions & 10 deletions SandboxiePlus/SandMan/Forms/SettingsWindow.ui
Original file line number Diff line number Diff line change
Expand Up @@ -1722,7 +1722,7 @@
<string>Hotpatches for the installed version, updates to the Templates.ini and translations.</string>
</property>
<property name="text">
<string>Version Updates</string>
<string>Incremental Updates</string>
</property>
</widget>
</item>
Expand Down Expand Up @@ -1754,13 +1754,6 @@ Unlike the preview channel, it does not include untested, potentially breaking,
</property>
</widget>
</item>
<item row="7" column="4" colspan="2">
<widget class="QLabel" name="lblRevision">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="7" column="3">
<widget class="QComboBox" name="cmbUpdate"/>
</item>
Expand All @@ -1780,10 +1773,10 @@ Unlike the preview channel, it does not include untested, potentially breaking,
<item row="8" column="2">
<widget class="QLabel" name="label_25">
<property name="toolTip">
<string>New full versions from the selected release channel.</string>
<string>New full installers from the selected release channel.</string>
</property>
<property name="text">
<string>New Versions</string>
<string>Full Upgrades</string>
</property>
</widget>
</item>
Expand Down Expand Up @@ -1860,6 +1853,20 @@ Unlike the preview channel, it does not include untested, potentially breaking,
</property>
</widget>
</item>
<item row="7" column="4" colspan="3">
<widget class="QLabel" name="lblRevision">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="8" column="4" colspan="3">
<widget class="QLabel" name="lblRelease">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
</layout>
Expand Down
51 changes: 37 additions & 14 deletions SandboxiePlus/SandMan/OnlineUpdater.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,7 @@ bool COnlineUpdater::HandleUpdate()
{
QString PendingUpdate;

QString OnNewRelease = GetOnNewReleaseOption();
bool bNewRelease = false;
QVariantMap Release = m_UpdateData["release"].toMap();
QString ReleaseStr = Release["version"].toString();
Expand All @@ -457,7 +458,6 @@ bool COnlineUpdater::HandleUpdate()
}

QString OnNewUpdate = GetOnNewUpdateOption();

bool bNewUpdate = false;
QVariantMap Update = m_UpdateData["update"].toMap();
QString UpdateStr = Update["version"].toString();
Expand Down Expand Up @@ -486,7 +486,16 @@ bool COnlineUpdater::HandleUpdate()
// solution: apply updates silently, then prompt to install new release, else prioritize installing new releases over updating the existing one
//

QString OnNewRelease = GetOnNewReleaseOption();
bool bAllowAuto = g_CertInfo.active && !g_CertInfo.expired; // To use automatic updates a valid certificate is required

//
// if we allow for version updates but not for automatic instalation/download of new release
// ignore the release and install it using the version updater
//

if (bNewUpdate && bNewRelease && !bAllowAuto)
bNewRelease = false;

bool bCanRunInstaller = (m_CheckMode == eAuto && OnNewRelease == "install");
bool bIsInstallerReady = false;
if (bNewRelease)
Expand All @@ -502,7 +511,7 @@ bool COnlineUpdater::HandleUpdate()
// clear when not up to date
theConf->DelValue("Updater/InstallerVersion");

if ((bCanRunInstaller || (m_CheckMode == eAuto && OnNewRelease == "download")) || AskDownload(Release))
if ((bAllowAuto && (bCanRunInstaller || (m_CheckMode == eAuto && OnNewRelease == "download"))) || AskDownload(Release, bAllowAuto))
{
if (DownloadInstaller(Release, m_CheckMode == eManual))
return true;
Expand All @@ -524,7 +533,7 @@ bool COnlineUpdater::HandleUpdate()
// clear when not up to date
theConf->DelValue("Updater/UpdateVersion");

if ((bCanApplyUpdate || (m_CheckMode == eAuto && OnNewUpdate == "download")) || AskDownload(Update))
if ((bCanApplyUpdate || (m_CheckMode == eAuto && OnNewUpdate == "download")) || AskDownload(Update, true))
{
if (DownloadUpdate(Update, m_CheckMode == eManual))
return true;
Expand Down Expand Up @@ -555,7 +564,7 @@ bool COnlineUpdater::HandleUpdate()
return bNewRelease || bNewUpdate;
}

bool COnlineUpdater::AskDownload(const QVariantMap& Data)
bool COnlineUpdater::AskDownload(const QVariantMap& Data, bool bAuto)
{
QString VersionStr = MakeVersionStr(Data);

Expand All @@ -568,12 +577,25 @@ bool COnlineUpdater::AskDownload(const QVariantMap& Data)
QVariantMap Installer = Data["installer"].toMap();
QString DownloadUrl = Installer["downloadUrl"].toString();

if (!DownloadUrl.isEmpty())
enum EAction
{
eNone = 0,
eDownload,
eNotify,
} Action = eNone;

if (bAuto && !DownloadUrl.isEmpty()) {
Action = eDownload;
FullMessage += tr("<p>Do you want to download the installer?</p>");
else if(Data.contains("files"))
}
else if (bAuto && Data.contains("files")) {
Action = eDownload;
FullMessage += tr("<p>Do you want to download the updates?</p>");
else if (!UpdateUrl.isEmpty())
FullMessage += tr("<p>Do you want to go to the <a href=\"%1\">update page</a>?</p>").arg(UpdateUrl);
}
else if (!UpdateUrl.isEmpty()) {
Action = eNotify;
FullMessage += tr("<p>Do you want to go to the <a href=\"%1\">download page</a>?</p>").arg(UpdateUrl);
}

CCheckableMessageBox mb(theGUI);
mb.setWindowTitle("Sandboxie-Plus");
Expand All @@ -584,18 +606,18 @@ bool COnlineUpdater::AskDownload(const QVariantMap& Data)
mb.setCheckBoxText(tr("Don't show this update anymore."));
mb.setCheckBoxVisible(m_CheckMode != eManual);

if (!UpdateUrl.isEmpty() || !DownloadUrl.isEmpty() || Data.contains("files")) {
if (Action != eNone) {
mb.setStandardButtons(QDialogButtonBox::Yes | QDialogButtonBox::No | QDialogButtonBox::Cancel);
mb.setDefaultButton(QDialogButtonBox::Yes);
}
else
} else
mb.setStandardButtons(QDialogButtonBox::Ok);

mb.exec();

if (mb.clickedStandardButton() == QDialogButtonBox::Yes)
{
if (!DownloadUrl.isEmpty() || Data.contains("files")) {
if (Action == eDownload)
{
m_CheckMode = eManual;
return true;
}
Expand All @@ -604,7 +626,8 @@ bool COnlineUpdater::AskDownload(const QVariantMap& Data)
}
else
{
if (mb.clickedStandardButton() == QDialogButtonBox::Cancel) {
if (mb.clickedStandardButton() == QDialogButtonBox::Cancel)
{
theConf->SetValue("Updater/PendingUpdate", "");
theGUI->UpdateLabel();
}
Expand Down
2 changes: 1 addition & 1 deletion SandboxiePlus/SandMan/OnlineUpdater.h
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ private slots:
EUpdateScope ScanUpdateFiles(const QVariantMap& Update);
EUpdateScope GetFileScope(const QString& Path);

bool AskDownload(const QVariantMap& Update);
bool AskDownload(const QVariantMap& Update, bool bAuto);

static bool RunInstaller2(const QString& FilePath, bool bSilent);

Expand Down
29 changes: 23 additions & 6 deletions SandboxiePlus/SandMan/Windows/SettingsWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1381,25 +1381,42 @@ QString CSettingsWindow::GetCertLevel()

void CSettingsWindow::UpdateUpdater()
{
bool bOk = (g_CertInfo.active && !g_CertInfo.expired);
//ui.radLive->setEnabled(false);
if (!ui.chkAutoUpdate->isChecked()) {
if (!ui.chkAutoUpdate->isChecked())
{
ui.cmbInterval->setEnabled(false);
ui.cmbUpdate->setEnabled(false);
ui.cmbRelease->setEnabled(false);
ui.lblRevision->setText(QString());
ui.lblRelease->setText(QString());
}
else {
else
{
ui.cmbInterval->setEnabled(true);
if (ui.radStable->isChecked() && (!g_CertInfo.active || g_CertInfo.expired)) {

if (ui.radStable->isChecked() && !bOk) {
ui.cmbUpdate->setEnabled(false);
ui.cmbUpdate->setCurrentIndex(ui.cmbUpdate->findData("ignore"));
ui.lblRevision->setText(tr("Supporter certificate required"));
}
else {

ui.lblRevision->setText(tr("Supporter certificate required for access"));
} else {
ui.cmbUpdate->setEnabled(true);

ui.lblRevision->setText(QString());
}

ui.cmbRelease->setEnabled(true);
QStandardItemModel* model = qobject_cast<QStandardItemModel*>(ui.cmbRelease->model());
for (int i = 1; i < ui.cmbRelease->count(); i++) {
QStandardItem* item = model->item(i);
item->setFlags(bOk ? (item->flags() | Qt::ItemIsEnabled) : (item->flags() & ~Qt::ItemIsEnabled));
}

if(!bOk)
ui.lblRelease->setText(tr("Supporter certificate required for automation"));
else
ui.lblRelease->setText(QString());
}

OnOptChanged();
Expand Down

0 comments on commit 0ab9c47

Please sign in to comment.