Skip to content
Kirill Yakovenko edited this page Oct 16, 2017 · 11 revisions

The following items MUST be changed before releasing a fork of Omaha. Preferably, make these changes as soon as you start development:

  • omaha\main.scons

_is_google_update_build = False
_FULL_COMPANY_NAME = 'Crystalnix Ltd.'
_SHORT_COMPANY_NAME = 'Crystalnix'
_COMPANY_DOMAIN_BASE = 'crystalnix.appdater'
_COMPANY_DOMAIN = _COMPANY_DOMAIN_BASE + '.io'


  • omaha\base\const_object_names.h

kGlobalPrefix = _T("Global\\Crystalnix")
Set new uppercase GUIDs for:
kSetupMutex
kShutdownEvent
kCoreSingleInstance
kCrashHandlerSingleInstance
kUpdateAppsSingleInstance
kInstallAppSingleInstance
kGoogleUpdate3SingleInstance
kSetupPhase1NonSelfUpdateJobObject
kAppInstallJobObject
kSilentJobObject
kSilentDoNotKillJobObject
kInstallManagerSerializer
kMetricsSerializer
kRegistryAccessMutex
kOptUserIdLock


  • omaha\base\const_addresses.h

const TCHAR* const kUrlPing = _T("http://") COMPANY_DOMAIN _T("/service/update2");
const TCHAR* const kUrlUpdateCheck = _T("http://") COMPANY_DOMAIN _T("/service/update2");
const TCHAR* const kUrlCrashReport = _T("http://") COMPANY_DOMAIN _T("/cr/report");
const TCHAR* const kUrlMoreInfo = _T("http://") COMPANY_DOMAIN _T("/support/installer/?");
const TCHAR* const kUrlCodeRedCheck = _T("http://") COMPANY_DOMAIN _T("/service/check2");
const TCHAR* const kUrlUsageStatsReport = _T("http://") COMPANY_DOMAIN _T("/tbproxy/usagestats");


  • omaha\common\const_goopdate.h

For every "omaha..." replace to "Crystalnix..."
kRegValueServiceName
kRegValueMediumServiceName
kRegValueTaskNameC
kRegValueTaskNameUA
kServicePrefix
kMediumServicePrefix


  • omaha\goopdate\omaha3_idl.idl

Generate new lowercase GUIDs for every interface and coclass.
For every uuid(...) except uuid(___AUTO_GENERATED_GUID___)


  • omaha\plugins\update\activex\update_control_idl.idl`

Generate new lowercase GUIDs for every interface and coclass.


  • omaha\goopdate\resources\goopdate_dll\*.rc
  • omaha\goopdate\resources\goopdateres\*.rc
  • omaha\mi_exe_stub\*.rc

Update each translation to reflect your company and product. Omaha stores all its localized data in a set of resource-only DLLs, one per language. (The MetaInstaller stub, on the other hand, stores a far more minimal set of translations for all languages inside its EXE.)


Build the Omaha with these settings. Try it against our server after the build.


Testing Omaha Against Crystalnix Omaha Server

  • Test Application (run as admin):
    GoogleUpdate.exe /install "appguid={5A7490AC-F314-4BD3-9591-7B6E9CEA5560}&needsadmin=True"

If everything is done right, you will be able to find GoogleUpdate.exe in the following locations:

scons-out\opt-win\staging\
scons-out\dbg-win\staging\