This website uses cookies. By clicking Accept, you consent to the use of cookies. Click Here to learn more about how we use cookies.
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- 32bit installer can't use RegDBGetKeyValueEx get values on VistaBiz 64bit
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Apr 29, 2009
08:23 AM
32bit installer can't use RegDBGetKeyValueEx get values on VistaBiz 64bit
Hi
I have 2 questions,
1, I change "Summary information Stream>Template Summary" value to Intel,x64;1033. then I rebuild my installer but I found out the output msi file can't running on WinXP32 and VistaBiz64 OS, why this happen, does this mean I can't select "Intel" and "x64" together?
2, I use "Intel;1033" in Template, and write a custom code to read registry like below:
begin
regKeyName = "SOFTWARE\\COMPANY\\Product\\versionNO\\Setup";
RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );
if (RegDBKeyExist (regKeyName) < 0) then
MsiSetProperty(ISMSI_HANDLE, "ProdStat", "0" );
else
RegDBGetKeyValueEx(regKeyName, "Directory", nvType, strRootPath, nsize);
MsiSetProperty(ISMSI_HANDLE, "ROOTDIR", strRootPath);
MsiSetProperty(ISMSI_HANDLE, "ProdStat", "1" );
endif;
end;
finally, on 32bit OS, I can get the result form RegDBGetKeyValueEx, but in 64 bit OS, I can't get any result.
(I install 32bit application on 32bit OS, 64bit application on 64bit OS)
who can tell me how to get the path infomation on 64 bit OS
Thanks
Thunder
I have 2 questions,
1, I change "Summary information Stream>Template Summary" value to Intel,x64;1033. then I rebuild my installer but I found out the output msi file can't running on WinXP32 and VistaBiz64 OS, why this happen, does this mean I can't select "Intel" and "x64" together?
2, I use "Intel;1033" in Template, and write a custom code to read registry like below:
begin
regKeyName = "SOFTWARE\\COMPANY\\Product\\versionNO\\Setup";
RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );
if (RegDBKeyExist (regKeyName) < 0) then
MsiSetProperty(ISMSI_HANDLE, "ProdStat", "0" );
else
RegDBGetKeyValueEx(regKeyName, "Directory", nvType, strRootPath, nsize);
MsiSetProperty(ISMSI_HANDLE, "ROOTDIR", strRootPath);
MsiSetProperty(ISMSI_HANDLE, "ProdStat", "1" );
endif;
end;
finally, on 32bit OS, I can get the result form RegDBGetKeyValueEx, but in 64 bit OS, I can't get any result.
(I install 32bit application on 32bit OS, 64bit application on 64bit OS)
who can tell me how to get the path infomation on 64 bit OS
Thanks
Thunder
(2) Replies
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Apr 29, 2009
11:26 AM
Yes, (1) is impossible; for more information search up Heath Stewart's blog on multiple packages and multiple architectures.
For (2), if you need to search the 64-bit areas of the registry (as opposed to the 32-bit WOW64 areas), you'll need to use something like REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY before your registry read. Don't forget to reset REGDB_OPTIONS as appropriate.
For (2), if you need to search the 64-bit areas of the registry (as opposed to the 32-bit WOW64 areas), you'll need to use something like REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY before your registry read. Don't forget to reset REGDB_OPTIONS as appropriate.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Apr 29, 2009
09:55 PM
Great! code works..
Thanks!!!!:D
Thanks!!!!:D