SocketTools includes Windows Installer (MSI) packages which enable you to easily redistribute the components used in your projects. They are included with the developer installation package for each edition and available for both 32-bit and 64-bit applications.
There are several advantages to using our install packages in your setup project. The installers ensure the components and libraries are copied to the correct location (based on whether they are 32-bit or 64-bit), and because they are shared components, reference counting is used to ensure that they won't be removed if they are still being used by other applications.
The ActiveX installers will automatically perform the component registration for each control, and each of the libraries will have their type library information in the registry updated. This means your setup project doesn't need to be concerned about COM registration unless it's required by other third-party controls (manifests for registration-free COM are also available if you would prefer to use them instead).
If your application is 32-bit, you want to use the x86 version of the installer package. If it's 64-bit, then you would use the x64 version. For .NET projects which target either platform, you would need to include both. Keep in mind which version you should use depends on the platform your application targets, not what version of Windows you are installing on. If your application is 32-bit, you should use the x86 installer package even if you are installing on a 64-bit Windows system.
Installing Packages
Although these MSI packages can be installed interactively, they are primarily intended to be used within your own setup application. If you are using tools like InstallShield, Inno Setup or NSIS to create the installer for your application, include the appropriate package in your project and then use the msiexec command to perform the installation.
msiexec /i [drive:\path\][package.msi] /qn
If you are using the SocketTools .NET Edition and your application targets the x86 platform, you would include the MSI package cstools10_interop_x86.msi with your setup project and then run the msiexec command during the installation process:
msiexec /i cstools10_interop_x86.msi /qn
The package will be installed in "quiet" mode, where no dialogs or progress bars are displayed to the end-user. Depending on how your setup project has been created, you may need to provide a full path to the folder where the MSI package is copied to on the local system.
Normally, when you install one of our redistributable packages, it will be visible as an installed app (on older versions of Windows, under Programs and Features). You can prevent this by appending ARPSYSTEMCOMPONENT=1 to the command. For example:
msiexec /i cstools10_interop_x86.msi /qn ARPSYSTEMCOMPONENT=1
This tells the Windows Installer you do not want the package to be listed as an installed component. Users will not be able to uninstall the package normally and it would have to be done using the msiexec command or by running the installer and using maintenance mode to remove the package.
When you install the SocketTools package make sure the setup process is running with elevated (Administrator) privileges. These packages copy shared components into protected system folders and can write to restricted areas of the registry. In most cases, your application installer will already have the appropriate privileges after issuing a User Access Control (UAC) prompt to the user, confirming they want to continue with the installation of your software.
If you have designed your setup project to install with limited privileges, you should not use these installer packages. Instead, you will need to copy the required components and libraries to the same folder where your application executable is being installed.
Uninstalling Packages
Your setup project can remove older versions of the SocketTools components you have previously installed. Reference counting is used to ensure the uninstall process is safe and will only remove those components which are no longer being used by any other applications. To uninstall a previous version of the package you can either reference the same MSI package, or you can use the product ID assigned to the package.
The product ID for each package is a unique value (GUID) and can be used to reference the package without requiring the original MSI package. These IDs are specific to a particular SocketTools release and a table of the IDs for each available installer is provided below. To perform the uninstall, you would use a command like this:
msiexec /x {product-id} /qn
For example, if a previous version of your application setup installed the 32-bit SocketTools ActiveX controls included with SocketTools 10 Build 1268 and you wanted to uninstall them, you would use the following command:
msiexec /x {70E0D67A-1C54-4491-A510-946CFE62D841} /qn
As with the installation process, the uninstall must be performed with elevated privileges within your setup project or from an script run from an Administrative command prompt. The uninstall will be performed silently with no dialogs or progress bars shown to the user. If the package has already been uninstalled (or was never previously installed), the command will exit silently without taking any action.
Package Information
A complete list of installer files and product IDs are available for each MSI package included with SocketTools:
SocketTools editions prior to version 8.0 did not include installer packages. To remove earlier versions of the SocketTools ActiveX components, you should first manually unregister them using the regsv32.exe command and then delete them. Older versions of the .NET assemblies and dynamic link libraries do not need to be unregistered before they are deleted. Exercise caution when manually removing SocketTools components from the system. Any application which depends on them will fail to execute once they are removed.
See Also
SocketTools 11 .NET Redistribution
SocketTools 11 ActiveX Redistribution
SocketTools 11 Library Redistribution
SocketTools Support Files