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

Deployed assemblies are not deleted after uninstall

Hello,

I have a Basic MSI project (IS 2009 SP1) that deploys .NET assemblies. Until recently uninstallation handled correctly deleting of deployed assemblies. But now they are left in target directory and I need to delete them manually. There is no error message or indication of that is something went wrong during uninstallation. What can the problem?
Labels (1)
0 Kudos
(12) Replies
Kovalenko
Level 6

The log file that is generated during uninstallation shows:

[HTML]MSI (s) (B4:DC) [11:58:27:599]: Feature: QEF; Installed: Local; Request: Absent; Action: Absent
MSI (s) (B4:DC) [11:58:27:599]: Component: AllOtherFiles; Installed: Local; Request: Absent; Action: Absent
MSI (s) (B4:DC) [11:58:27:599]: Component: AllOtherFiles1; Installed: Local; Request: Absent; Action: Absent
MSI (s) (B4:DC) [11:58:27:599]: Component: AllOtherFiles2; Installed: Local; Request: Absent; Action: Absent
MSI (s) (B4:DC) [11:58:27:599]: Component: AllOtherFiles3; Installed: Local; Request: Absent; Action: Absent
MSI (s) (B4:DC) [11:58:27:599]: Component: AllOtherFiles4; Installed: Local; Request: Absent; Action: Absent
MSI (s) (B4:DC) [11:58:27:599]: Component: AllOtherFiles5; Installed: Local; Request: Absent; Action: Absent
...[/HTML]

Such status is log for every installed component. Does anybody have a clue why it is so?
0 Kudos
Lewis99
Level 4

I'm having the same problem, although I have duplication of assemblies between features and it is only those dll's that are not deleted. I am installing all assemblies into the same directory and using 'never overwrite' yes. How can I get around this problem?
0 Kudos
Kovalenko
Level 6

I have a vague assumption that it is due to upgrade and installation of SP. What version of IS do you use?
0 Kudos
Lewis99
Level 4

I'm using Installshield 2009 Premier
Version 15
Service Pack 1.

Is that what you are using?
0 Kudos
Kovalenko
Level 6

Yes.

I am trying to figure out what is the problem. I will post back a bit later about the results. Probably you encounter the same problem.
0 Kudos
Lewis99
Level 4

OK thank you Kovalenko. I am really very stuck with the problem so any information you find will be very helpful. Here are the results of my investigations:

If I look in the MSI Log I see the following:

MSI (s) (FC:A0) [13:06:43:752]: Executing op: ComponentUnregister(ComponentId={3A0966C5-55E6-A035-AB25-4C005178B2D6},,BinaryType=0,PreviouslyPinned=1)
1: {9AC43159-48AF-4171-BB27-A91F0000CEBF} 2: {3A0966C5-55E6-A035-AB25-4C005178B2D6}

These correspond with all of the dll's that don't get deleted. I am using the Shared = Yes property because I want the registry to keep track of the number of times the same dll is installed from different features. i.e. Feature A and Feature B may both contain the same dll, but the installation copies them all into one main directory. I am also using dynamic file allocation to assign the dlls to each feature.

I can see that all of my Shared Assemblies are being deleted from the registry, yet PreviouslyPinned=1 remains and so do all the duplicated dlls in my installation directory.

I've tried running it on several, clean machines. However, my installer still fails to delete a subset of the files.
0 Kudos
Lewis99
Level 4

PS: I also have the same 'Absent' values that you had in your logfile:

MSI (s) (FC:A0) [13:06:42:127]: Component: AllOtherFiles; Installed: Local; Request: Absent; Action: Absent
MSI (s) (FC:A0) [13:06:42:127]: Component: AllOtherFiles1; Installed: Local; Request: Absent; Action: Absent
MSI (s) (FC:A0) [13:06:42:127]: Component: AllOtherFiles2; Installed: Local; Request: Absent; Action: Absent
MSI (s) (FC:A0) [13:06:42:127]: Component: _FAD7BC9773DE077A3CA18D5BB964FE5D; Installed: Local; Request: Absent; Action: Null
MSI (s) (FC:A0) [13:06:42:127]: Component: _62D6A2DD9465AD5A65BEAABA29A6DA52; Installed: Local; Request: Absent; Action: Null
MSI (s) (FC:A0) [13:06:42:127]: Component: _11ABF4932AD00801C80094D8EFFCFB3D; Installed: Local; Request: Absent; Action: Null
MSI (s) (FC:A0) [13:06:42:127]: Component: _A6BBD9D898514E177DE950025FB62B8F; Installed: Local; Request: Absent; Action: Null
MSI (s) (FC:A0) [13:06:42:127]: Component: _FB798DEEFA3D0E0FBC7CAF9DD4C25396; Installed: Local; Request: Absent; Action: Null
MSI (s) (FC:A0) [13:06:42:127]: Component: _7E6A2199B6E22470D3C4650790D0CB79; Installed: Local; Request: Absent; Action: Null
MSI (s) (FC:A0) [13:06:42:127]: Component: _CB155800C0E9F48874724AB38CD6AFAC; Installed: Local; Request: Absent; Action: Null
MSI (s) (FC:A0) [13:06:42:127]: Component: _0C82B1A4DF158DEC6D33A0AAC52977CC; Installed: Local; Request: Absent; Action: Null
0 Kudos
Kovalenko
Level 6

Lewis,

For now I have now idea of what is happening during uninstall. The only thing that I came to until now is that if I create another directory under [INSTALLDIR] and move all output files from, let's say, [INSTALLDIR]/Bin (this is where these file cannot be deleted from) and use this newly created folder, everything works fine.

Nevertheless no solution till now.

PS Message like

Component: AllOtherFiles; Installed: Local; Request: Absent; Action: Absent

is valid as I understood, because I created a sample installation project that works correctly and it has the same entries.
0 Kudos
Lewis99
Level 4

Thanks for the info. I will try using a secondary folder and see what happens. I just created the same project in IS2008 and everything worked fine. The main difference that I can see so far between the two logfiles is that IS2009 is marking the components with the PreviouslyPinned=1 flag.
0 Kudos
Lewis99
Level 4

Having said that, it doesn't look like the Shared functionality works at all in IS2008 as no entries are being made in the registry for shared dlls even with Shared=Yes. If someone knows differently or can correct me, please let me know.
0 Kudos
Kovalenko
Level 6

Finally I was able to solve my problem

The PreviouslyPinned=1 indicates that you likely have a share count in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs for the keyfile of those components.

You might just want to clean out this machine and test from scratch if this is a machine that's been tested or used extensively in the past.
0 Kudos
Lewis99
Level 4

I have tried running the installer on a fresh machine but it still leaves files behind. I've checked the shared area of the registry and there are no entries for my application's dll's.

I am trying to package a .NET application by running a dependency check and creating folders for each feature. Some of the features share dll's. Eg. Feature A and Feature B may include xxx.dll. Therefore when the full feature set is installed (into one application directory) some dll's are being overwritten several times. At this point a count appears in the shared area of the registry. However, when I uninstall everything, the counts are deleted but PreviouslyPinned=1 is still set in the log file.

Am I taking the right approach for this? Also, is this how your installer works? e.g. Multiple features with duplicate dll's going into the same installation directory? If so, how did you overcome the problem?
0 Kudos