I want a set of functions, or a component, that will encapsulate dealings with Windows Installer MSI files. In particular, the behavior I need is:
* **dynamic-bind** to MSI API functions. the functions/component should gracefully fail if the MSI runtimes are not available on the target computer; the functions should also report which version of MSI is available where applicable
* execute an MSI setup using an **external UI**, encapsulate all MSI messages (such as errors, disk change requests, progress events) in callback functions/events, allow returning proper values in these callbacks/events
* apply **upgrades/patches/transforms** to an existing MSI file; refresh the target system state accordingly
* **cache** the copy of the used MSI file in a place where the MSI uninstaller can find it without prompting user
* set source and target **folder locations** in the MSI file
* provide a way to edit the **summary stream** of the MSI file
I also need a properly arranged MSI database, possibly derived from one of the schemas, which performs an empty MSI setup (such that, when I just populate the necessary tables for my required actions, the MSI will perform a valid install).
All work must run on Delphi 7.
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Installation package that will install the software (in ready-to-run condition) on the platform(s) specified in this bid request.
3) Exclusive and complete copyrights to all work purchased. (No GPL, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site).
All Win32 Platforms.