RolandPheasant / TailBlazer

A modern file tail utility based on Rx.Net which show cases reactive programming and Dynamic Data (see https://github.com/RolandPheasant/DynamicData)
GNU General Public License v3.0
2.23k stars 249 forks source link

Windows Installer #97

Open patchandthat opened 8 years ago

patchandthat commented 8 years ago

Just started using Tailblazer at work, big fan, two thumbs up.

Has there been any thought about putting together an installer, or if not, how would you feel about it?

Personally, I'd like to be able to launch from my start menu/search more easily, and an installer would also cover #90.

If there's interest in having this, I'd happily put something together with WiX and send a PR.

RolandPheasant commented 8 years ago

Thanks for the double thumbs up - much appreciated.

Although an installer would be good for registering file associations and creating a short cut, it would also mean more maintenance. Currently there are only 2 files for deployment. The exe and a log file.

Also where would you suggest hosting the MSI? Or would you expect it to be on the git release pages?

thoemmi commented 8 years ago

I would just host in on the GitHub release page. At least that's how I do it for one of my applications. It even checks the release page regularly and notifies the user if there's a new release available.

If you agree I could contribute a similar experience to TailBlazer.

patchandthat commented 8 years ago

Appveyor supports permanent links to build artifacts so you could have a releases branch and link to the latest version that way. Github releases is also good. I think hosting only gets complicated if you want to have an auto-update feature, and even then it comes down to reading a feed of what versions are available, the installers themselves could still be on Github.

I'm thinking initially I'd keep it as simple as possible, keeping the installation at 2 files + log directory isn't an issue. If you wanted to do an all user install you'd probably need to have the logs written to %AppData% along with your settings files, otherwise installing per user is the easy option.

The other thing is I'd want to wrap the MSI with a managed bootstrapper application so that the installer can also use the MaterialDesign awesomeness. Because why wouldn't you, it's lovely.

RolandPheasant commented 8 years ago

@thoemmi @patchandthat I think I am convinced.

Just one question to @patchandthat, what does creating a managed bootstrapper involve?

thoemmi commented 8 years ago

I've never used a bootstrapper before, just created plain setups using WiX.

patchandthat commented 8 years ago

So as well as having a wix project that builds your actual MSI, you have a bootstrapper project, which is essentially just a package of your MSI and any prerequisite MSIs which run through a linear install sequence.

The managed application side of things is a bunch of class libraries which get embedded in the bootstrapper and contain the WPF interface you want to show during the install sequence, and it hooks into events raised by the bootstrapper during the install. From there, it's only a short stretch to use your MVVM/IoC of choice etc. The installer for the wix toolset itself is a good example of this in action.

It's also easy to pass data from the managed UI to the bootstrapper, and then in turn feed the data to MSI properties so you can have a nice UI for any pre-install config. All your installer/bootstrapper assembly attributes can bind to the attributes TailBlazer, so everything just stays in sync.

I've got a pretty rough around the edges example of it all here, using Caliburn Micro and Autofac, but I don't think it would be much effort to use whatever frameworks you want.

RolandPheasant commented 8 years ago

@patchandthat I am convinced. Do you want to do it?

patchandthat commented 8 years ago

@RolandPheasant Yes, I'd be happy to.

If you use Resharper, Stylecop, or anything of that ilk could you export your settings at some point to make it easy for me to follow your coding style?

RolandPheasant commented 8 years ago

Excellent.

I only use resharper out if the box styles

schulz3000 commented 8 years ago

Maybe you can use Squirrel.Windows an easy to use installer and updater framework

patchandthat commented 8 years ago

I've already taken this a fair way with WiX, the windows shell integration is mostly sorted but needs merging with all the changes that have happened since I started, there's a working WiX installer and bootstrapper, it's just the interface for the bootstrapper needs building.

I've been sidetracked by some freelance work but once it's all out of the way I intend to pick this back up.

rc201612 commented 8 years ago

+1 Keen to get this update

alexanderfast commented 8 years ago

@patchandthat cant find a branch related to this in your fork, any plans on pushing a work in progress? I would like to see where you're at. Do you need help?