0

In order to provide custom more friendly looking UI when updating the application via the downloaded .msi file I have to provide a custom (WPF, if it matters) window that will in turn replicate what msiexec is doing by calling MSI.DLL functions via interop.

Initially it was a simple msiexec call against the downloaded .msi file, and it would be nice if it could stay that simple.

I also need to provide Cancel functionality just like msiexec does.

What would be the proper way to programatically start/stop/abort this via MSI.DLL functions?

(What I did is look at different MSI Interop implementations, WiX included, but couldn't easily recognize APIs to do this).

maksa
  • 374
  • 5
  • 16
  • Have you looked at the `MsiEndTransaction` function? http://msdn.microsoft.com/en-us/library/bb736318(v=VS.85).aspx Here is a LINQ to MSI post which you may be able to tweak to fit your needs (it is more advanced than starting the msiexec process): http://bartdesmet.net/blogs/bart/archive/2008/06/13/linq-to-msi-part-1-interop.aspx – Joseph Yaduvanshi Jul 19 '11 at 13:43
  • Check out WiX's new Burn functionality... http://robmensching.com/blog/posts/2010/9/6/Burn-baby.-Burn – James Johnston Jul 19 '11 at 13:36

1 Answers1

1

That's what MSI calls an "external UI handler." See the MSI SDK for details, such as "Monitoring an Installation Using MsiSetExternalUI."

Bob Arnson
  • 21,377
  • 2
  • 40
  • 47