View Full Version : .NET private DLL upgrades

Peter Kosenko
01-13-2010, 08:24 PM
We have our first .NET application. All of the EXEs and DLLs were built in .NET. However, the executables are intended to go into a private directory (not the side-by-side cache) and they are being created to update like ordinary DLLs (a higher version replaces the lower version in the same folder).

First thing I had to do was downselect .NET scan at build to get rid of dependencies, since the installer was importing bizarre files it had no business importing. I changed .Net scan at build to Properties only.

Then I tested Minor Upgrade using a scan setting of "Properties" only on the components.

I got a component change error. That is because the version of the file was updated from to, which changed the installer's registry variables.

HKEY_CLASSES_ROOT\Installer\Assemblies\C:|Program Files|SEER|SEER-CostIQ|SEER_CostIQ.exe

'SEER_CostIQ.exe;FileVersion;' <- reg variable

Changed to:

'SEER_CostIQ.exe;FileVersion;' <- changed reg variable

That's because the version property information imported by .NET changed, and that information is concatenated as a registry variable as a .NET identifier, apparently.

The only way that I can get the installer not to complain is to completely suppress the installer importing .NET properties (by selecting None for scan at build.) so that NO "Installer/Assemblies" registry keys are created.

My question is, is that proper? IS one supposed to OMIT and MsiAssembly and MsiAssemblyName Property data for any .NET component that is installed "privately" (in a Program Folder)? And IF NOT, how is one supposed to update the components during minor upgrade without getting the changed component warning/error?

There seems to be NO WAY to "upgrade" a .NET DLL or EXE in a private folder without getting the following complaint:

Val0010: The data in component 'SEER_CostIQ.exe' differs from the previous setup. However, this component will not reinstall in an upgrade scenario. Therefore, the changes will not be applied to the target system during the upgrade. Table: 'MsiAssemblyName' Record: 'SEER_CostIQ.exe;Version;' c:\installshield 2008 projects\costiq\previous_installers\1.0.7\seer-costiq.msi