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
- :
- Re: InstallScriptMSI project + "Template Summary = x64" = Add/Remove dosen't show informa
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
‎Oct 15, 2007
01:41 AM
InstallScriptMSI project + "Template Summary = x64" = Add/Remove dosen't show informa
I did following setting :
1) Create an InstallScriptMSI project
2) Set Template Summary = x64
and this caused Add/Remove couldn't show software information on Vista 64.
Howevere, BasicMSI project + "Template Summary = x64" showed software information CORRECTLY on Vista 64.
Is this an InstallShield 2008 bug or there is anything else I have to set?
1) Create an InstallScriptMSI project
2) Set Template Summary = x64
and this caused Add/Remove couldn't show software information on Vista 64.
Howevere, BasicMSI project + "Template Summary = x64" showed software information CORRECTLY on Vista 64.
Is this an InstallShield 2008 bug or there is anything else I have to set?
(5) Replies
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Oct 15, 2007
11:36 PM
I have seen this problem as well with my x64 product configurations. The Win32 ones are ok.
I use InstallScript MSI projects.
Damien
I use InstallScript MSI projects.
Damien
Not applicable
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Oct 16, 2007
05:29 PM
InstallScript doesn't support installing applications as 64-bit (i.e.) writing the uninstall information to the 64-bit part of the registry, only installing 32-bit applications (that can include 64-bit files).
In the InstallScript MSI case we make a copy the uninstall information that MSI creates and modify it appropriately to run the InstallScript uninstall (which also launches MSI to uninstall as well.), however we always look for this information in the 32-bit part of the registry, so if MSI is writing this information to the 64-bit part of the registry, this copy operation may be failing, and thus no uninstall information.
Can you please confirm that MSI is writing the info to the 64-bit part of the registry in this case.
Devin Ellingson
Software Developer
InstallShield, A Macrovision Company
In the InstallScript MSI case we make a copy the uninstall information that MSI creates and modify it appropriately to run the InstallScript uninstall (which also launches MSI to uninstall as well.), however we always look for this information in the 32-bit part of the registry, so if MSI is writing this information to the 64-bit part of the registry, this copy operation may be failing, and thus no uninstall information.
Can you please confirm that MSI is writing the info to the 64-bit part of the registry in this case.
Devin Ellingson
Software Developer
InstallShield, A Macrovision Company
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Oct 16, 2007
07:27 PM
Yes, the 64bit registry is missing the InstallShield_{PRODUCTGUID} key.
The 32bit one exists but is missing the information needed to be displayed in the ARP Summary Panel.
I'm a bit surprised it isn't supported 😞
I guess I can write the missing the registry entries when installing x64 product configurations.
The 32bit one exists but is missing the information needed to be displayed in the ARP Summary Panel.
I'm a bit surprised it isn't supported 😞
I guess I can write the missing the registry entries when installing x64 product configurations.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jan 26, 2009
09:47 PM
I ran into a similar problem with InstallShield 2009sp2. With assistance from Acresso support, I added the following workaround (to write the missing support info into InstallShield_" + PRODUCT_GUID in the SysWow64 area of the registry).
// workaround for InstallShield bug IOC-000078120
// need to manually place Add/Remove Programs support info into 32 bit registry area
function OnEnd()
STRING svUninstKey, szManufacturer, szProductVersion, szHelpTelephone, szURLInfoAbout;
STRING szURLUPdateInfo,szHelpLink, szARPCONTACT;
NUMBER nBuff, nResult;
begin
svUninstKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_" + PRODUCT_GUID;
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
if (REMOVEALLMODE) then
RegDBDeleteValue(svUninstKey,"Publisher");
RegDBDeleteValue(svUninstKey,"DisplayVersion");
RegDBDeleteValue(svUninstKey,"HelpTelephone");
RegDBDeleteValue(svUninstKey,"HelpLink");
RegDBDeleteValue(svUninstKey,"URLInfoAbout");
RegDBDeleteValue(svUninstKey,"URLUpdateInfo");
RegDBDeleteValue(svUninstKey,"Contact");
RegDBDeleteValue(svUninstKey,"EstimatedSize");
RegDBDeleteValue(svUninstKey,"InstallLocation");
else
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "Manufacturer", szManufacturer,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "Publisher", REGDB_STRING, szManufacturer, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ProductVersion", szProductVersion,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "DisplayVersion", REGDB_STRING, szProductVersion, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPHELPTELEPHONE", szHelpTelephone,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "HelpTelephone", REGDB_STRING, szHelpTelephone, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPHELPLINK", szHelpLink,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "HelpLink", REGDB_STRING, szHelpLink, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPURLINFOABOUT", szURLInfoAbout,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "URLInfoAbout", REGDB_STRING, szURLInfoAbout, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPURLUPDATEINFO", szURLUpdateInfo,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "URLUpdateInfo", REGDB_STRING, szURLUpdateInfo, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPCONTACT", szARPCONTACT,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "Contact", REGDB_STRING, szARPCONTACT, -1 );
// I don't think EstimatedSize is actually used - size is determined by InstallLocation
nResult = RegDBSetKeyValueEx ( svUninstKey, "EstimatedSize", REGDB_NUMBER, "22661", -1 );
nResult = RegDBSetKeyValueEx ( svUninstKey, "InstallLocation", REGDB_STRING, TARGETDIR, -1);
endif;
end;
// workaround for InstallShield bug IOC-000078120
// need to manually place Add/Remove Programs support info into 32 bit registry area
function OnEnd()
STRING svUninstKey, szManufacturer, szProductVersion, szHelpTelephone, szURLInfoAbout;
STRING szURLUPdateInfo,szHelpLink, szARPCONTACT;
NUMBER nBuff, nResult;
begin
svUninstKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_" + PRODUCT_GUID;
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
if (REMOVEALLMODE) then
RegDBDeleteValue(svUninstKey,"Publisher");
RegDBDeleteValue(svUninstKey,"DisplayVersion");
RegDBDeleteValue(svUninstKey,"HelpTelephone");
RegDBDeleteValue(svUninstKey,"HelpLink");
RegDBDeleteValue(svUninstKey,"URLInfoAbout");
RegDBDeleteValue(svUninstKey,"URLUpdateInfo");
RegDBDeleteValue(svUninstKey,"Contact");
RegDBDeleteValue(svUninstKey,"EstimatedSize");
RegDBDeleteValue(svUninstKey,"InstallLocation");
else
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "Manufacturer", szManufacturer,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "Publisher", REGDB_STRING, szManufacturer, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ProductVersion", szProductVersion,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "DisplayVersion", REGDB_STRING, szProductVersion, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPHELPTELEPHONE", szHelpTelephone,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "HelpTelephone", REGDB_STRING, szHelpTelephone, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPHELPLINK", szHelpLink,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "HelpLink", REGDB_STRING, szHelpLink, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPURLINFOABOUT", szURLInfoAbout,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "URLInfoAbout", REGDB_STRING, szURLInfoAbout, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPURLUPDATEINFO", szURLUpdateInfo,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "URLUpdateInfo", REGDB_STRING, szURLUpdateInfo, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPCONTACT", szARPCONTACT,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "Contact", REGDB_STRING, szARPCONTACT, -1 );
// I don't think EstimatedSize is actually used - size is determined by InstallLocation
nResult = RegDBSetKeyValueEx ( svUninstKey, "EstimatedSize", REGDB_NUMBER, "22661", -1 );
nResult = RegDBSetKeyValueEx ( svUninstKey, "InstallLocation", REGDB_STRING, TARGETDIR, -1);
endif;
end;
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Feb 09, 2009
08:19 PM
Here's my latest version of the workaround - I discovered that I needed to set the "Version" DWORD value (which is displayed during a minor update "updating version X.X.0001 to X.X.0002"), and the only way I could figure out how to get it was to read it from the 64 bit registry area (anyone know of a better way?)
// workaround for InstallShield bug IOC-000078120
// need to manually place Add/Remove Programs support info into 32 bit registry area
function OnEnd()
STRING svUninstKey, szManufacturer, szProductVersion, szHelpTelephone, szURLInfoAbout;
STRING szURLUpdateInfo, szHelpLink, szARPCONTACT, szVersion, szVersionMajor, szVersionMinor;
NUMBER nBuff, nResult, nvType;
begin
// get Version from the 64 bit registry area
REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY;
svUninstKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + PRODUCT_GUID;
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
nBuff = 256;
RegDBGetKeyValueEx (svUninstKey, "Version", nvType, szVersion, nBuff);
nBuff = 256;
RegDBGetKeyValueEx (svUninstKey, "VersionMajor", nvType, szVersionMajor, nBuff);
nBuff = 256;
RegDBGetKeyValueEx (svUninstKey, "VersionMinor", nvType, szVersionMinor, nBuff);
// Go back to the 32 bit registry
REGDB_OPTIONS = REGDB_OPTIONS & ~REGDB_OPTION_WOW64_64KEY;
svUninstKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_" + PRODUCT_GUID;
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
if (REMOVEALLMODE) then
//MessageBox("REMOVE",0);
RegDBDeleteValue(svUninstKey,"Publisher");
RegDBDeleteValue(svUninstKey,"DisplayVersion");
RegDBDeleteValue(svUninstKey,"Version");
RegDBDeleteValue(svUninstKey,"VersionMajor");
RegDBDeleteValue(svUninstKey,"VersionMinor");
RegDBDeleteValue(svUninstKey,"HelpTelephone");
RegDBDeleteValue(svUninstKey,"HelpLink");
RegDBDeleteValue(svUninstKey,"URLInfoAbout");
RegDBDeleteValue(svUninstKey,"URLUpdateInfo");
RegDBDeleteValue(svUninstKey,"Contact");
RegDBDeleteValue(svUninstKey,"EstimatedSize");
RegDBDeleteValue(svUninstKey,"InstallLocation");
else
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "Manufacturer", szManufacturer,nBuff);
//MessageBox(szManufacturer,0);
nResult = RegDBSetKeyValueEx ( svUninstKey, "Publisher", REGDB_STRING, szManufacturer, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ProductVersion", szProductVersion,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "DisplayVersion", REGDB_STRING, szProductVersion, -1 );
nResult = RegDBSetKeyValueEx ( svUninstKey, "Version", REGDB_NUMBER, szVersion, -1 );
nResult = RegDBSetKeyValueEx ( svUninstKey, "VersionMajor", REGDB_NUMBER, szVersionMajor, -1 );
nResult = RegDBSetKeyValueEx ( svUninstKey, "VersionMinor", REGDB_NUMBER, szVersionMinor, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPHELPTELEPHONE", szHelpTelephone,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "HelpTelephone", REGDB_STRING, szHelpTelephone, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPHELPLINK", szHelpLink,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "HelpLink", REGDB_STRING, szHelpLink, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPURLINFOABOUT", szURLInfoAbout,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "URLInfoAbout", REGDB_STRING, szURLInfoAbout, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPURLUPDATEINFO", szURLUpdateInfo,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "URLUpdateInfo", REGDB_STRING, szURLUpdateInfo, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPCONTACT", szARPCONTACT,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "Contact", REGDB_STRING, szARPCONTACT, -1 );
nResult = RegDBSetKeyValueEx ( svUninstKey, "EstimatedSize", REGDB_NUMBER, "22661", -1 );
nResult = RegDBSetKeyValueEx ( svUninstKey, "InstallLocation", REGDB_STRING, TARGETDIR, -1);
endif;
//if(!MAINTENANCE) then
// MessageBox("First time",0);
//endif;
end;
// workaround for InstallShield bug IOC-000078120
// need to manually place Add/Remove Programs support info into 32 bit registry area
function OnEnd()
STRING svUninstKey, szManufacturer, szProductVersion, szHelpTelephone, szURLInfoAbout;
STRING szURLUpdateInfo, szHelpLink, szARPCONTACT, szVersion, szVersionMajor, szVersionMinor;
NUMBER nBuff, nResult, nvType;
begin
// get Version from the 64 bit registry area
REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY;
svUninstKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + PRODUCT_GUID;
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
nBuff = 256;
RegDBGetKeyValueEx (svUninstKey, "Version", nvType, szVersion, nBuff);
nBuff = 256;
RegDBGetKeyValueEx (svUninstKey, "VersionMajor", nvType, szVersionMajor, nBuff);
nBuff = 256;
RegDBGetKeyValueEx (svUninstKey, "VersionMinor", nvType, szVersionMinor, nBuff);
// Go back to the 32 bit registry
REGDB_OPTIONS = REGDB_OPTIONS & ~REGDB_OPTION_WOW64_64KEY;
svUninstKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_" + PRODUCT_GUID;
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
if (REMOVEALLMODE) then
//MessageBox("REMOVE",0);
RegDBDeleteValue(svUninstKey,"Publisher");
RegDBDeleteValue(svUninstKey,"DisplayVersion");
RegDBDeleteValue(svUninstKey,"Version");
RegDBDeleteValue(svUninstKey,"VersionMajor");
RegDBDeleteValue(svUninstKey,"VersionMinor");
RegDBDeleteValue(svUninstKey,"HelpTelephone");
RegDBDeleteValue(svUninstKey,"HelpLink");
RegDBDeleteValue(svUninstKey,"URLInfoAbout");
RegDBDeleteValue(svUninstKey,"URLUpdateInfo");
RegDBDeleteValue(svUninstKey,"Contact");
RegDBDeleteValue(svUninstKey,"EstimatedSize");
RegDBDeleteValue(svUninstKey,"InstallLocation");
else
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "Manufacturer", szManufacturer,nBuff);
//MessageBox(szManufacturer,0);
nResult = RegDBSetKeyValueEx ( svUninstKey, "Publisher", REGDB_STRING, szManufacturer, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ProductVersion", szProductVersion,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "DisplayVersion", REGDB_STRING, szProductVersion, -1 );
nResult = RegDBSetKeyValueEx ( svUninstKey, "Version", REGDB_NUMBER, szVersion, -1 );
nResult = RegDBSetKeyValueEx ( svUninstKey, "VersionMajor", REGDB_NUMBER, szVersionMajor, -1 );
nResult = RegDBSetKeyValueEx ( svUninstKey, "VersionMinor", REGDB_NUMBER, szVersionMinor, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPHELPTELEPHONE", szHelpTelephone,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "HelpTelephone", REGDB_STRING, szHelpTelephone, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPHELPLINK", szHelpLink,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "HelpLink", REGDB_STRING, szHelpLink, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPURLINFOABOUT", szURLInfoAbout,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "URLInfoAbout", REGDB_STRING, szURLInfoAbout, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPURLUPDATEINFO", szURLUpdateInfo,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "URLUpdateInfo", REGDB_STRING, szURLUpdateInfo, -1 );
nBuff = 256;
MsiGetProperty(ISMSI_HANDLE, "ARPCONTACT", szARPCONTACT,nBuff);
nResult = RegDBSetKeyValueEx ( svUninstKey, "Contact", REGDB_STRING, szARPCONTACT, -1 );
nResult = RegDBSetKeyValueEx ( svUninstKey, "EstimatedSize", REGDB_NUMBER, "22661", -1 );
nResult = RegDBSetKeyValueEx ( svUninstKey, "InstallLocation", REGDB_STRING, TARGETDIR, -1);
endif;
//if(!MAINTENANCE) then
// MessageBox("First time",0);
//endif;
end;