Yeah.. after i saw what you wrote and reread the documentation i now realise why the strcpy was necessary. so i did
Section -Post
# lalala
# define the variables
var /GLOBAL unkey64
StrCpy $unkey64 "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
var /GLOBAL unkey32
StrCpy $unkey32 "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
var /GLOBAL regkey64
StrCpy $regkey64 "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths\Foo.exe"
var /GLOBAL regkey32
StrCpy $regkey32 "Software\Microsoft\Windows\CurrentVersion\App Paths\Foo.exe"
${If} ${RunningX64}
SetRegView 64
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "$regkey64" "" "$INSTDIR\Foo.exe"
WriteRegStr HKLM "$unkey64" "DisplayName" "$(^Name)"
WriteRegStr HKLM "$unkey64" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr HKLM "$unkey64" "DisplayIcon" "$INSTDIR\Foo.exe"
WriteRegStr HKLM "$unkey64" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr HKLM "$unkey64" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr HKLM "$unkey64" "Publisher" "${PRODUCT_PUBLISHER}"
${Else}
SetRegView 32
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "$regkey32" "" "$INSTDIR\Foo.exe"
WriteRegStr HKLM "$unkey32" "DisplayName" "$(^Name)"
WriteRegStr HKLM "$unkey32" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr HKLM "$unkey32" "DisplayIcon" "$INSTDIR\Foo.exe"
WriteRegStr HKLM "$unkey32" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr HKLM "$unkey32" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr HKLM "$unkey32" "Publisher" "${PRODUCT_PUBLISHER}"
${EndIf}
SectionEnd
should this be the only other area that this is needed?
the only other area where i explicitly mention the 64 thing was right before the main function, so i guess the end of oninit function was
# foofoo
install:
${If} ${RunningX64}
SetRegView 64
StrCpy $INSTDIR "$PROGRAMFILES64\${PRODUCT_NAME}"
SetOutPath "$PROGRAMFILES64\${PRODUCT_NAME}"
${Else}
SetRegView 32
StrCpy $INSTDIR "$PROGRAMFILES\${PRODUCT_NAME}"
SetOutPath "$PROGRAMFILES\${PRODUCT_NAME}"
${EndIf}
mainly, i had issues with it actually putting the 64-bit code into program files, as it kept putting it into x86. originally we did that, bc our code wasn't 64-bit compliant yet, but eventually we did it, but in the past we did just programfiles32 or something. i had thought forcing it on 64 would force it to go program files regardless of architecture.
anyway, the above does what i want, with at least to the registry, thanks again for all your help...just wanting to make sure that if you can think of other areas that i may had missed off the top of hte head w/o seeing the entire project, but any other areas i should look out for you think?