Skip to content
ronginme edited this page Sep 1, 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:

Example Company name: "Crystalnix"
Example full URL Omaha server web page: "http://crystalnix.appdater.io"

  • 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"

Look for GoogleUpdate.exe in these locations:

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

The Omaha client should contact with Omaha server for a version query, then download and install the product.