InstallDirRegKey
будет считывать из указанного значения реестра и инициализировать $InstDir
с путем чтения (переопределяя атрибут InstallDir
) до вызова .onInit
, но вы должны записать это значение реестра самостоятельно в один из ваших Section
s.
Вы не опубликовали весь свой код, поэтому трудно сказать, что происходит на самом деле, но вы, похоже, используете MultiUser по какой-то причине, и у него есть свои собственные определения, которые необходимо установить: MULTIUSER_INSTALLMODE_INSTDIR
, MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY
и MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
.
Section
!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
${If} $MultiUser.InstallMode == CurrentUser
WriteRegStr HKCU "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME}" "$InstDir"
${Else}
WriteRegStr HKLM "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME}" "$InstDir"
${EndIf}
!else
WriteRegStr HK?? Software\?? ?? "$InstDir" ; Must match key used in InstallDirRegKey
!endif
SectionEnd