We have two types of components that we are developing in VB6. Hidden common components that we refer to projects and volatile components of the application that we create daily. Common components are packaged as merge modules (using WiX), while application components are mapped to application configuration components. This is a snippet of our main .wxs file
<Component Id="MyFile15.ocx" Guid="YOURGUID-BCB7-451C-B07D-D205AEAE1EB9" > <File Id="MyFile15.ocx" Name="MyFile15.ocx" LongName="MyFile15.ocx" KeyPath="yes" src="$(var.SrcAppBinnPath)\MyFile15.ocx" DiskId="1" /> <?include Registry_MyFile15.wxi ?> </Component>
We still use WiX 2.0, so we use a modified version of fat to create .wxi registry files for all the ActiveX / OCXs / EXEs DLL files that we create daily. Instead of com / typelib entries, we send the entire COM entry as a direct entry to the registry table. We focus on the outdated Windows 2.0 installer because we don’t need any new features.
We use custom actions (VC6 DLL) for some special cases - setting up MSDE, fixing the database, loading / setting up DCOM. We use an SDK platform loader that downloads instmsiX.exe and prepares the Windows installer on virgin systems (mainly 9x and NT). We use a 7-zip self-extractor to unpack bootstrapper and msi on the client machine. In some cases, we use UPX -lzma for executable files, but they do not scale very well on terminal servers where unpacked versions are reused in sessions.
Recently, we have been porting our customers to portable builds using a non-access COM server. We use our own UMMM tool to create a COM manifest without registering. SxS COM has limitations (no DCOM, no ActiveX EXE), but allows us to change assemblies while the application is running - do not reset the downtime.
source share