Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Windows Installer UI examples?

Windows Installer UI examples?

Scheduled Pinned Locked Moved The Lounge
csharptutorialdatabasevisual-studiocom
3 Posts 2 Posters 7 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    David Wulff
    wrote on last edited by
    #1

    I want to write a program that runs as the front end to a Windows Installer database. My target is something along the lines of the Visual Studio .NET installer. I can't mimic the custom controls I need in InstallShield (Whhich I currently use to create the MSI database), or by converting my own custom dialogs to the format the MSI engine expects, so I need to write my own. The problem is that I don’t know where to start. I have looked high and low for a simple example executable (with source) that shows how to interact with the Windows Installer API to read a straightforward MSI database and take care of stuff like locked files, etc, as well as the standard stuff like transferring files and updating the registry with the information in the database. I don’t want to have to read the entire documentation for a fortnight, unless I have an example to refer to and say “so that’s what it means”. Can anyone suggest such a thing? I looked through the basic examples that came with the Windows Installer 1.5 SDK, but nothing looked like it would be suitable for my needs. David Wulff dwulff@battleaxesoftware.com

    M 1 Reply Last reply
    0
    • D David Wulff

      I want to write a program that runs as the front end to a Windows Installer database. My target is something along the lines of the Visual Studio .NET installer. I can't mimic the custom controls I need in InstallShield (Whhich I currently use to create the MSI database), or by converting my own custom dialogs to the format the MSI engine expects, so I need to write my own. The problem is that I don’t know where to start. I have looked high and low for a simple example executable (with source) that shows how to interact with the Windows Installer API to read a straightforward MSI database and take care of stuff like locked files, etc, as well as the standard stuff like transferring files and updating the registry with the information in the database. I don’t want to have to read the entire documentation for a fortnight, unless I have an example to refer to and say “so that’s what it means”. Can anyone suggest such a thing? I looked through the basic examples that came with the Windows Installer 1.5 SDK, but nothing looked like it would be suitable for my needs. David Wulff dwulff@battleaxesoftware.com

      M Offline
      M Offline
      Matt Weagle
      wrote on last edited by
      #2

      David, I think the call you want is MsiSetExternalUI, but I've not been able to get this to work correctly (does anyone else hear an article topic ;))? I can think of two other options. My least preferred is to move to InstallShield 7. This allows you to use the IS engine as a wrapper around the MSI database. You can create your dialogs using the standard InstallShield 5.5/6.0+ approach and drive the MSI database through InstallScript. If it's only a dialog or two, the option I'd suggest would be to create a MSI Custom Action that drives your custom dialog via a DLL. The custom action you can then update Properties in the active MSI database. Let me know if I can provide additional info. Cheers.

      D 1 Reply Last reply
      0
      • M Matt Weagle

        David, I think the call you want is MsiSetExternalUI, but I've not been able to get this to work correctly (does anyone else hear an article topic ;))? I can think of two other options. My least preferred is to move to InstallShield 7. This allows you to use the IS engine as a wrapper around the MSI database. You can create your dialogs using the standard InstallShield 5.5/6.0+ approach and drive the MSI database through InstallScript. If it's only a dialog or two, the option I'd suggest would be to create a MSI Custom Action that drives your custom dialog via a DLL. The custom action you can then update Properties in the active MSI database. Let me know if I can provide additional info. Cheers.

        D Offline
        D Offline
        David Wulff
        wrote on last edited by
        #3

        I too have 'played' with MsiSetExternalUI, but can't get it to use dialogs not originating from as MSI database table. From what I gather about the way InstallShield's ISWI and Developer (IS 7) products, or indeed any other program that generates MSI databases, is that they use tables of dialogs and controls to define the layout and controls on a dialog. If I went down the road of using InstallShield Devloper's IS engine wrapper as you mentioned, I still would not be able to modify the dialogs programmatically (or would I?). Besides which, from the test's i've done InstallShield has decided to force the text "InstallShield" and the horizontal line at the base of every dialog (even custom ones) with the release of InstallShield Developer. This is very annoying as I want my dialogs to have a bitmap accross the entire client area, not just the top part. Now my bitmaps would have to have a big line and the text "InstallShield" superimposed on top of my corporate logo. :(. And have you tried playing with the InstallShield dialog editors 'z-order'? It just doesn't work. What I am ultimately looking at doing not merly providing my own UI for the installation sequence, but simulating the whole thing. In other words, not using custom dialogs within the MSI engine, but rather using the MSI engine from withing a seperate program, much like Visual Studio .NET does. This is the only way I can forsee me gaining the level of control I need over the UI. David Wulff dwulff@battleaxesoftware.com

        1 Reply Last reply
        0
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • World
        • Users
        • Groups