Application does not self repair.

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

Answers (2)

Posted by: pjgeutjens 11 years ago
Red Belt
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

Posted by: anonymous_9363 11 years ago
Red Belt
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

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

Don't be a Stranger!

Sign up today to participate, stay informed, earn points and establish a reputation for yourself!

Sign up! or login


This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ