What I need is an **API** to MERGE an MSM file (a Windows Installer Merge Module) into an MSI file (a Windows Installer installation). In particular, the specifics are:
1) Use the **WINAPI** calling conventions for all API functions, provide callbacks during lengthy operations for progress feedback and allowing cancellation
2) Allow **specifying the target folder** for the files contained inside the MSM (if they are not installed into a pre-defined folder)
3) Allow **specifying the feature** the MSM belongs in the new, merged-into MSI
4) If any **files are contained** inside the MSM, **extract them all to a specified** folder, AND
5) Fix up the merged MSI to **read the files from a specified source path** (relative to the MSI), instead of looking inside the MSI for them [If for step 5 you need code to extract a CAB file, I will provide that code]
6) I have attached an example MSI file. You can assume that all MSI files you API receives will have a similar structure. While I can guarantee that the target MSI file will always be something like this one, I cannot guarantee anything about the source MSM files - this is why I need the API to merge. The API needs to accept any source MSM, and **resolve intelligently merge conflicts** like the ones below:
*_Sequencing Conflict_*: Sequence conflict for CreateShortcuts action in ModuleInstallExecuteSequence table.
*_Sequencing Conflic_t*: Sequence conflict for InstallFinalize action in ModuleInstallExecuteSequence table.
*_Sequencing Conflict_*: Sequence conflict for FileCost action in ModuleInstallUISequence table.
*_Sequencing Conflict_*: Sequence conflict for AppSearch action in ModuleInstallUISequence table.
*_Merge Conflict_*: Conflict in _Validation table, Row: Shortcut, ShowCmd
*_Merge Conflict_*: Conflict in Directory table, Row: SystemFolder
*_Merge Conflict_*: Conflict in Directory table, Row: TARGETDIR
7) Provide an Orca-like **user interface for the testing of the API** (the part of Orca which lets you merge an MSM into an MSI)
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
All Win32 Platforms.