cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Installshield repackager

CChong
By Level 11 Flexeran
Level 11 Flexeran
There is one application we are repackaging which updates certain system files and after that the system reboots and then proceeds with the installation.
We used snapshot to capture this installation.
There is are inconsistent results of this -
1) After packaging, when the exe is invoked, another installer window pops up asking us to update system files and the application hangs.
2) After packaging, when the MSI is installed, there are two entries created in Add/remove programs - one for the application and one for the updater. If i remove the updater entry from the project and rebuild, the first case is repeated. Can someone tell me how to remove the entry.
(1) Reply
Hi,
We too had the same problem in one of our earlier application called BlackICE Agent Installer. We used a VBScript Custom Action that runs after installfinalize Exec Sequence. All you need is to create a custom action and place this script with the appropriate registry key value taken from the Hive HKCR\Installer\Products\.

**********************VBScript *****************
'Delete the Registry Entry....
On Error Resume Next


Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003

' Object used to get StdRegProv Namespace
Set wmiLocator = CreateObject("WbemScripting.SWbemLocator")

' Object used to determine local machine name
Set wshNetwork = CreateObject("WScript.Network")

' Registry Provider (StdRegProv) lives in root\default namespace.
Set wmiNameSpace = wmiLocator.ConnectServer(wshNetwork.ComputerName, "root\default")
Set objRegistry = wmiNameSpace.Get("StdRegProv")


' Example Deletion of Value
sPath = "Installer\Products\9B7B9EE9C205DCD4B8DD3B4AD1E41106"
lRC = DeleteRegEntry(HKEY_CLASSES_ROOT, sPath)

Function DeleteRegEntry(sHive, sEnumPath)
' Attempt to delete key. If it fails, start the subkey
' enumration process.

lRC = objRegistry.DeleteKey(sHive, sEnumPath)

' The deletion failed, start deleting subkeys.
If (lRC <> 0) Then

' Subkey Enumerator
On Error Resume Next

lRC = objRegistry.EnumKey(HKEY_LOCAL_MACHINE, sEnumPath, sNames)

For Each sKeyName In sNames
If Err.Number <> 0 Then Exit For
lRC = DeleteRegEntry(sHive, sEnumPath & "\" & sKeyName)
Next

On Error Goto 0

' At this point we should have looped through all subkeys, trying
' to delete the registry key again.
lRC = objRegistry.DeleteKey(sHive, sEnumPath)

End If

End Function
*************End of VBScript **************

Let me know if it works. Further, make this script run only after the updater is executed and delete its entry. This key will delete the entry from the add/remove programs entry. So first find the appropriate key value and then write this script. Though it looks a bit time taking task, it really works.