зеркало из https://github.com/mozilla/gecko-dev.git
Bug 862894 - Handle Maintenance Service control panel version info. r=rstrong, r=jimm
This commit is contained in:
Родитель
0742c6c8db
Коммит
61e5af9fda
|
@ -72,6 +72,8 @@ InstallDirRegKey HKLM "Software\Mozilla\MaintenanceService" ""
|
||||||
|
|
||||||
SetOverwrite on
|
SetOverwrite on
|
||||||
|
|
||||||
|
; serviceinstall.cpp also uses this key, in case the path is changed, update
|
||||||
|
; there too.
|
||||||
!define MaintUninstallKey \
|
!define MaintUninstallKey \
|
||||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\MozillaMaintenanceService"
|
"Software\Microsoft\Windows\CurrentVersion\Uninstall\MozillaMaintenanceService"
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,27 @@
|
||||||
|
|
||||||
#pragma comment(lib, "version.lib")
|
#pragma comment(lib, "version.lib")
|
||||||
|
|
||||||
|
// This uninstall key is defined originally in maintenanceservice_installer.nsi
|
||||||
|
#define MAINT_UNINSTALL_KEY L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MozillaMaintenanceService"
|
||||||
|
|
||||||
|
static BOOL
|
||||||
|
UpdateUninstallerVersionString(LPWSTR versionString)
|
||||||
|
{
|
||||||
|
HKEY uninstallKey;
|
||||||
|
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
|
||||||
|
MAINT_UNINSTALL_KEY, 0,
|
||||||
|
KEY_WRITE | KEY_WOW64_32KEY,
|
||||||
|
&uninstallKey) != ERROR_SUCCESS) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
LONG rv = RegSetValueExW(uninstallKey, L"DisplayVersion", 0, REG_SZ,
|
||||||
|
reinterpret_cast<const BYTE *>(versionString),
|
||||||
|
(wcslen(versionString) + 1) * sizeof(WCHAR));
|
||||||
|
RegCloseKey(uninstallKey);
|
||||||
|
return rv == ERROR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A wrapper function to read strings for the maintenance service.
|
* A wrapper function to read strings for the maintenance service.
|
||||||
*
|
*
|
||||||
|
@ -433,6 +454,11 @@ SvcInstall(SvcInstallAction action)
|
||||||
result = FALSE;
|
result = FALSE;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
WCHAR versionStr[128] = { L'\0' };
|
||||||
|
swprintf(versionStr, 128, L"%d.%d.%d.%d", newA, newB, newC, newD);
|
||||||
|
if (!UpdateUninstallerVersionString(versionStr)) {
|
||||||
|
LOG(("The uninstaller version string could not be updated."));
|
||||||
|
}
|
||||||
LOG(("The new service binary was copied in."));
|
LOG(("The new service binary was copied in."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче