We are facing strange problem while packaging one small application.
In this application we are using one merge module. [Microsoft_VC90_CRT_x86.msm]
Problem: If we add this merge module, then our application stops repairing. We use below vbscript which is in our template, and in this vbscript we are setting REINSTALLMODE=UMS, and in property table we are setting REINSTALLMODE=OMUS.
1) If we are putting OMUS in place of UMS in vbscript, then our application starts repairing, even if merge module is present.
2) If we delete merge module then also application starts repairing, and we do not have to edit vbscript.
We are not sure, why this is happening. We are not able to find out the technical reason.
Please guide.

set activeDB = Database
Set viewComponents = activeDB.OpenView("SELECT ComponentId, Attributes FROM Component WHERE Attributes > 0")
Set retrieveComponent = viewComponents.Fetch
Do Until (retrieveComponent Is Nothing)
strComponentID = retrieveComponent.StringData(1)
strAttributes = retrieveComponent.IntegerData(2)
If (strAttributes And 4) Then
strComponentPath = Installer.ComponentPath(Property("ProductCode"), strComponentID)
If strComponentPath = "" Then
Exit Do
End If
End If
Set retrieveComponent = viewComponents.Fetch

0 Comments   [ + ] Show Comments


Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.


Hey guys,

trying to fathom what exactly your script does. If I interpret it correctly it sets REINSTALLMODE to "ums" (no more file level repairs?) if it finds a component with a registry keypath

if my assumption about the change in the property disabling file level actions during repair is correct, this might explain the differences in behaviour. As a plan of action I'd suggest adding some logging statements to the script to identify exactly which components are triggering the change of the REINSTALLMODE property

This should allow you to drill down closer to the cause of your problems.

Hope you get there

Answered 04/21/2010 by: pjgeutjens
Red Belt

Please log in to comment
Where in the relevant sequence does this property-setting Custom Action feature?

Some awkward-looking code there, BTW. The 2 occurences of the line 'Set retrieveComponent = viewComponents.Fetch' are particularly baffling. Switch to a different loop mechanism, maybe something likeDo
Set retrieveComponent = viewComponents.Fetch
Loop Until retrieveComponent = Nothing
Set retrieveComponent = viewComponents.Fetch
Loop While Not (retrieveComponent = Nothing)

Also, I prefer to explicitly refer to objects in use so, rather than Set activeDb = Database

I'd have Set activeDb = Session.Database

Answered 04/22/2010 by: VBScab
Red Belt

Please log in to comment
Answer this question or Comment on this question for clarity