We require a very simple .MSI (Microsoft Installer) file creator as a C++ function.
## Deliverables
Function Inputs:
string: Publisher
string: Product Name
string: Major Version Number
string: Minor Version Number
string: Full path of executable // 32-bit EXE
string: Start menu item name
vector<File> List of all files and paths to be included in the install directory:
struct File
{
string source; // path of file to be included
string dest; // Relative path (within install dir) and name of file destination
};
string MSI Filename // Save resulting MSI file here
Resulting MSI Behaviour:
Must work on XP SP3 or later with no additional install.
If the OS is earlier than XP the installer should detect this and tell the user why it won't install.
Version Behaviour:
Generate a valid, unique ProductCode using the Publisher, Product Name and Versions
Generate a valid, unique UpgradeCode using the Publisher, Product Name and Major Version Number
Side by side installation of different major versions
Do not install if current or later minor version of the same major version is already installed
Removes earlier minor version if already installed
Install path should be /<32-bit Program Files Folder>/<Author>/<Product Name>/
No desktop shortcut should be generated
Start menu item labelled <Product Name> should be generated so that it appears directly under 'All Programs' (not in a subdirectory)
No CRT DLL install dependencies; we'll either statically link our EXE or explicitly include DLLs in the install directory
Technical Requirements:
The interface must be the C++ function specified above.
Open source code (any license) may be included however it must be linked statically, not as a DLL.
The function may make use of the system() call and include any windows EXE as long as it's a freely available free program and fully automated (and contains no malware, spyware, etc.). In doing so the function may write temporary files to the current directory (and should remove them when finished).
Deliverable:
Must come with a VS2008 or VS2010 solution file ready to build with example tests demonstrating all requested features and tested on XP SP3, Vista and 7.
Notes:
This goal of this project is to help us automate our software deployment while keeping things as simple as possible, given our limited requirements.
If applicable, please tell us what open-source code and/or free Windows utility you would use for this project, along with any other thoughts or considerations. Your thoughts are important to us; we will not necessarily be accepting the lowest bid.