Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Programatically create MSI installer


5 replies to this topic

dorelsturm

dorelsturm
  • Full Members
  • 23 posts

Posted 09 January 2008 - 13:17

Hi,

In need to create a simple MSI installer that is doing this:
- install some files in a specified directory
- remove some files from specified directories
- add registry entries
- remove registry entries
- DOES NOT appear in Add/Remove Programs (in fact the system should not see that this MSI installer was ever installed).

This MSI installer should be created programatically "on the fly" using APIs from MSI.DLL (like MsiOpenDatabase, MsiCreateRecord, etc.).

To get the previous behaviour all that I need is to add records into these tables:
Component
Files
RemoveFile
RemoveRegistry
Registry

Do I need to add entries in some other tables?
Where can I found examples using MSI.DLL APIs that creates a simple MSI installer inserting some stuff in the tables.

Thanks for your help.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 10 January 2008 - 13:36

Feature, FeatureComponents and Media tables come to mind. YOu will also need some sequence tables.
Instead of creating the msi file from scratch, maybe youd better use a template msi where you just add the rows that are not identical for each version.


VBScab

VBScab
  • Full Members
  • 436 posts

Posted 13 February 2008 - 08:20

QUOTE (dorelsturm @ 2008-01-09 13:17)
Where can I found examples using MSI.DLL APIs that creates a simple MSI installer inserting some stuff in the tables.

It would be *much* simpler to use the WindowsInstaller.Installer object to do this. Using MSI.DLL is a journey through hell. Trust me, I've been there, trying to coax a script to produce advertising scripts (.AAS files) for Group Policy deployment (for which the Installer object model only exposes a method in v4 and above, BTW.)
- Don't know why 'x' happened? Want to know why 'y' happened? ProcMon will tell you.
- Try using http://www.google.com before posting.
- I answer questions only via forums. Please appreciate the time I give here and don't send me personal emails.

Server

Server
  • Full Members
  • 10 posts

Posted 10 August 2011 - 13:34

Yes, I also thought about automatic creation of the installation packages. Currently it is partially possible with my tool (Windows Installer Query Tool). In fact it uses WIX DTF on top of MSI.dll - this helps to deal with the hell partially.

Download a tool and experiment with queries, then you can create your own InstallShield or whatever you want. smile.gif

Edited by Server, 10 August 2011 - 13:35.


akerl

akerl
  • Full Members
  • 104 posts

Posted 11 August 2011 - 16:57

It's very nice to create a package with WIX#.
Look here: Wix# - managed interface for WiX
http://www.csscript.net/WixSharp.html

Andreas Kerl

Inside Windows Installer 4.5
ISBN 3-86645-431-7


Server

Server
  • Full Members
  • 10 posts

Posted 28 January 2012 - 19:15

Good point. I agree that this kinda good and free replacement for InstallShield Automation interface. However, bad thing - last update 23:21 4 Oct '09.