0

I have created a patch for my product using Installshield. When I apply the patch the product files get updated successfully. However, when trying to uninstall the patch it uninstalls or removes successfully the newly added dlls to the patch from the target m/c, but somehow some dlls or exe which got modified due to the patch are not reverting back upon uninstallation of the patch.

When I see the version, date and time of some of the dlls are the date on which patch was applied and also the version remains the new one after uinstallation of the patch. that means dlls are not getting reverted back.

Can someone please help to understand why some of my dlls are not getting reverted back upon patch uninstallation. I have followed the patch uninstall rules properly.

Stein Åsmul
  • 39,960
  • 25
  • 91
  • 164
prag
  • 38
  • 6
  • This is off-topic. Stack Overflow is a Q&A resource about programming, not a general tech help site. – Adi Inbar Jul 25 '14 at 05:08
  • Have you looked at a verbose log of the patch uninstallation for hints? You mention checking timestamps rather than version information; are your DLLs not versioned? – Michael Urman Jul 25 '14 at 12:12
  • Hi Michael I checked the verbose its says configuration and reconfiguration done successfully for the removal of the patch. And yes dlls are versioned but not reverting bck, some extract from log MSI (s) (0C:BC) [10:31:05:707]: Component: some.DLL; Installed: Local; Request: Null; Action: Null. MSI (s) (0C:BC) [10:31:06:657]: File = some: Final State = Overwrite – prag Jul 28 '14 at 05:15
  • MSI (s) (0C:BC) [10:31:12:685]: Windows Installer removed an update. Product Name: YYY. Product Version: 1.0.111.2403. Product Language: 1033. Manufacturer: LLL Inc.. Update Name: Test. Removal success or error status: 0. MSI (s) (0C:BC) [10:31:12:686]: Note: 1: 1728 MSI (s) (0C:BC) [10:31:12:686]: Product: YYY-- Configuration completed successfully. – prag Jul 28 '14 at 05:24
  • so i am not getting hw do I proceed further for more investigation.. – prag Jul 28 '14 at 05:28
  • above logs got generated while uninstalling the patch, after uninstallation few dlls are still pointing to the latest version, not the initial one.. – prag Jul 28 '14 at 09:29
  • If the Dlls are marked "component attributes shared" then that will keep the highest version available. See msidbComponentAttributesShared at http://msdn.microsoft.com/en-us/library/aa368007(v=vs.85).aspx so you may need to understand exactly which settings IS uses when creating a patch. Also keep in mind that dates are irrelevant in this situation - it's file versions that matter. – PhilDW Jul 29 '14 at 20:08
  • PhilDW: in older versions of Installshield this flag is set by default, I am not sure newer versions of Installshield are different. Curiously there was no way to change this "default behavior" for component creation either. I had to run an automation script to set the right attributes. – Stein Åsmul Jul 30 '14 at 05:49
  • Hi PhilDW.. my component containing the dll which is not getting reverted upon uninstallation of patch is not marked as shared in the YYY.ism file and yes dlls are versioned, the second point you mentioned to check IS setting of the components while creating patch does there is any chance it get changed during patch creation and if so how do I check it.. – prag Jul 30 '14 at 06:29
  • I suggest you open the base MSI file with Orca, and then use the Transform->View patch to load the patch. For the files in question look at the Component table for the shared attributes flag at that link, which is NOT the same as just shared. Glytzhkof's comment indicates that this may be set by default. – PhilDW Jul 30 '14 at 19:03
  • Hi Phil... as u suggested I checked the same the and I see the Attribute field for those questioned components are set to 0 as per initial design in base MSI. it looks like component table is fine.. the log while unistalling the patch says MSI (s) (D4:80) [11:14:33:398]: Component: DIR_some.dll; Installed: Local; Request: Null; Action: Null... so does this null in action and request meaning is that it doing nothing also final state says MSI (s) (D4:80) [11:14:35:360]: File = some.DLL: Final State = Overwrite – prag Jul 31 '14 at 08:47
  • There may be more in the MSI log, but that bit by itself means nothing. The component is not the file. – PhilDW Aug 01 '14 at 19:24
  • PhilDW..when I see the baseline cache under windows\installer\$PatchCache$\ I can find the original dlls of my product after applying the patch.that means windows installer keeps the back up files so upon uinstallation of patch dlls should get reverted... – prag Aug 02 '14 at 07:42

2 Answers2

0

Open a Command Prompt (as Administrator), and run the command

sfc /scannow

Maybe this would help

Avinash Babu
  • 6,171
  • 3
  • 21
  • 26
  • hi ... i successfully run the command and it says "windows resource protection did not find any integrity issues".. that means problem is with my installer patch? – prag Jul 25 '14 at 06:16
  • @preang yeah it seems so ...try another installer – Avinash Babu Jul 25 '14 at 06:20
  • Unless the DLLs in question are protected by Windows (unlikely if they're being patched in a custom installation), `sfc /scannow` is very unlikely to help. – Michael Urman Jul 25 '14 at 12:10
0

Hi I got the solution upon patch uninstall why some components(dlls) are not getting reverted back. that is because there is custom action in my project which was causing the issue which was not allowing the Feature in which my component(dll) to re installed upon patch uninstall.

the log was saying as MSI (s) (1C:EC) [17:14:50:054]: Feature: ALLDLLS; Installed: Local; Request: Local; Action: Local Where it should be re installed instead of Local in request and action statement. So I have modified the custom action and the result is

MSI (s) (1C:EC) [17:14:50:054]: Feature: ALLDLLS; Installed: Local; Request: Reinstall; Action: Reinstall

which in turns also reverted the Components or dlls those were not getting reverted.

prag
  • 38
  • 6