Preface:
Okay, so let me preface this by saying that this might be slightly off-topic but trust me - I can't seem to find a better place to ask it on stack exchange without it violating the posting rules ever-so-slightly. As a result, I just want to note that I'm not asking for a library to accomplish what I'm trying to do, I'm asking about whether or not it is implementable (and the basics of how to implement it) in an existing library.
The question:
TL/DR:
I want to create a setup wizard that uses a WPF shell (much like the Visual Studio 2012/2013 installer). Is this possible to create without writing all of the actual installation/update management/uninstallation code?
Details:
My motivation behind this is because unless one plans to open source it or market it, maintaining a custom written installer simply for aesthetics is not practical. I don't want to rewrite the wheel on something that has decades of talent and real-world-experience already. As a result, I need to be able to rely on existing and proven installation management code - yet extend the user interface to fit the desired aesthetics
Now, my research thus far has shown that ClickOnce supports a custom interface - however it must be done in WinForms. No offense to WinForms, but I'm trying to accomplish this in WPF as it would allow me to share my existing resource dictionaries from the application being installed. Installshield also isn't an option if it requires a paid license (too expensive) - though I have no idea if it supports a custom UI or not
The only things I really require are the ability to carry extra files as a payload with the installer (pretty standard), and the ability to perform update management using a server as the version manager. Perks would be the ability to manage multiple release channels with a single project (which is not possible with ClickOnce) and somewhat-simple TFS build integration - but neither are required as we don't currently rely on either.
Again - I am sorry if this appears slightly off-topic...however the core of the question is not 'what library will do this?' but rather 'how do I implement this in said library?'
Here's an example of the VS2012/2013 installer: