Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

2 versions installed side-by-side, how...


2 replies to this topic

ryan h

ryan h
  • Members
  • 20 posts

Posted 12 April 2002 - 21:24

Can I stop the older version from using newer .dll's .exe's.  I am able to install 2 versions of the same product side-by-side(thanks to help from Stefan) but when I run the older version, it is using newer files.  Is it possible to keep the 2 versions completely seperate?
Ryan H.

hteichert

hteichert
  • Members
  • 158 posts

Posted 15 April 2002 - 10:16

Some info for this problem is given in Windows Installer documentation from Microsoft. Search for "Isolated Components".

It will not work if you want to install on Win 95 or Win NT 4, these OSs don't support isolated components, they are not able to load two different DLLs with the same name.

There might be problems if your software uses COM-objects, called via the version independent ProgID and the behaviour of these objects changed from old to new version. It would be necessary to change it to use the right version:
For example, there are the following entries:
 \\HKCR\AMOVIE.ActiveMovieControl
 \\HKCR\AMOVIE.ActiveMovieControl.1
 \\HKCR\AMOVIE.ActiveMovieControl.2
The first one is the version independent ProgID and contains a key "CurVer" which contains a "Default" to "\\HKCR\AMOVIE.ActiveMovieControl.2". If your old software would need the ".1", it would be necessary to directly use the ".1" version - otherwise it would use the newer version. This is a change that can't be done in the setup, it must be done in the files to be installed!

Holger
h.teichert-ott

hambone

hambone
  • Members
  • 206 posts

Posted 22 July 2002 - 16:10

when using private dlls on an older platform ( 85/98/NT )  it is required to use a third-party application.   we have found DLL-A-Gator to do this job fairly well ( eliminates most Type I and Type II DLL Hell problems).

on the newer platforms ( Win2000/XP ) ms has mimiced this technology with the advent of Private DLLs ( aka side-by-side DLLs ).  

to use this functionality you have two options:
1) for new apps you create you can give each version a unique version number and register the DLLs or components in the application directory.  your application will then know to use the private copy based on this version info.  

2) for existing apps. create an empty file in your application directory with the ".local." descriptor appended to the applciation name ( eg. in the C:\MyApp directory the MyApp.EXE runs the show.  create an empty file called MyApp.EXE.Local. )  when the the system sees the .local directive it will load the DLLs from the current directory

please see the MSDN site for more info...search for DLL Danger and DLL Hell