Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo


#1 Progress Dialog with Detailed Progress


This is a progress dialog fragment. It displays a progress bar, what operation is currently in progress and the estimated time until completion. I tried to set it up so that it was self contained and easy to reuse in other projects, but as I only have one project right now I don't know if I have succeeded.

They way I'm using it is by putting <FragmentRef Id="ProgressDialog"/> in my <Product> and <Show Dialog="Progress" After="CostFinalize"/> in my <UI>. Don't ask me why I picked CostFinalize, I can't remember.

You will need a dialog called Cancel that the cancel button can call or the package will cause an error. You may also need a DefaultUIFont property.

If you want an icon in the upper left corner of the dialog, add <Binary Id="InstallingIco" src="path\\to\\some\\icon.ico"/> to your <UI>. You may have to do this for the dialog to compile, I'm not certain.

I made it by darking Office 2000 and then hacking it up to do what I wanted. It took a long time to get correct since I didn't understand the event system when I started.


  • The Dialog fragment

  • Logged In: YES

    There seem to be a few problems with this example.

    1. The UIText for TimeRemaining does not display "[1]", which
      would expand to the number of minutes remaining. Something
      like "{[1] minutes and }[2] seconds remaining" should be used.

    2. There is a typo in the ScriptInProgress
      subscription: "ScriptInProgess". However, when I tried to
      subscribe the Text attribute to ScriptInProgress, the text
      changed to just "1" or "0", rather than to the string stored in
      the UIText table. The only way I could get a usable effect
      was by subscribing the Visible attribute to ScriptInProgress
      and placing a constant string in Text. The MSI SDK does not
      actually say which attribute of the Text control should
      subscribe to ScriptInProgress.