PDA

View Full Version : Changing InstallShield product code


mweinberger
12-27-2005, 07:11 PM
Hi guys,

I want to change the product code for an InstallShield project. I can change the code using the function below but am running into a problem on how to update the 'Uninstall' shortcut, which uses the product code. I'm using the IDriver.exe method, as this project is an InstallScript MSI project.

Function InstallShieldChangeProductCode()
'Create the InstallShield Developer automation object
Set objInst = CreateObject("ISWiAuto10.ISWiProject") 'For InstallShield X
'use "ISWiAutomation.ISWiProject" for InstallShield Developer
'use "ISWiAutomation9.ISWiProject" for DevStudio 9
'use "ISWiAuto10.ISWiProject" for InstallShield X
'use "ISWiAuto1050.ISWiProject" for InstallShield 10.5
'use "ISWiAuto11.ISWiProject" for InstallShield 11

'Open the project file
objInst.OpenProject Step.ExpProperty(Builder, "Filename")

'Change the product and package codes.
objInst.PackageCode = objInst.GenerateGUID();
objInst.ProductCode = objInst.GenerateGUID();

'Update the 'Uninstall' shortcut.
'TBD

'Save changes
objInst.SaveProject
objInst.CloseProject
end function

Thanks in advance for your thoughts on how to update the uninstall shortcut too.

Martin

mweinberger
12-28-2005, 12:07 PM
In case anybody is following this thread, I'm currently thinking of solving the problem from within InstallShield. The IS project should be able to pull its own product code for the uninstall shortcut argument rather than having it hard coded. I should be able to do something like

/M[PRODUCT_GUID]

rather than

/M{9EF6F5CC-69FC-433D-9D2E-971E55CAE819}

as the argument for IDriver. The specific thought above failed, but I continue to try.

mweinberger
12-28-2005, 12:15 PM
Cool, I just saved myseslf hours of work on all my projects. The solution is:

/M[ProductCode]

You an create an uninstall shortcut that automatically updates, when the producct code changes by using the above code rather than the explict one that the InstallShield product itself creates. For those that use the /x method the principle should be the same.

:-)

Martin A. Weinberger
ButterflyVista
http://www.butterflyvista.com/