Hi Christian,

If it was up to me, I would gladly open-source it, I think I too would
benefit from other people's ideas, since I'm not really an expert in the
Win Installer field. This bootstrapper thing is just a side project I'm
working on. Anyway, if you or anyone else on this list have any questions
about implementing custom .net bootstrappers, I'm ready to help if I can.

Best regards,
Igor

On Tue, Oct 23, 2012 at 10:34 AM, Christian Hausknecht <
chauskne...@beracom.de> wrote:

> Hi Igor,
>
> I allready guessed that... unfortunately not much developers create such
> things for Open Source or Free Software projects :-(
>
> But thanks for telling us about your BA design and the decisions you took!
> That also helps :-)
>
> Best regards,
>
> Christian
>
> -----Ursprüngliche Nachricht-----
> Von: Igor Brejc [mailto:igor.br...@gmail.com]
> Gesendet: Dienstag, 23. Oktober 2012 10:13
> An: General discussion for Windows Installer XML toolset.
> Betreff: Re: [WiX-users] Getting started writing a custom Bootstrapper
> interface
>
> Hi Christian,
>
> Unfortunately I cannot release the source code, it's the property of the
> company I work for.
>
> Best regards,
> Igor
>
> On Mon, Oct 22, 2012 at 8:30 AM, Christian Hausknecht <
> chauskne...@beracom.de> wrote:
>
> > Hello Igor,
> >
> > is there any chance that you could provide us the source code?
> >
> > Bets regards,
> >
> > Christian
> >
> >
> > -----Ursprüngliche Nachricht-----
> > Von: Igor Brejc [mailto:igor.br...@gmail.com]
> > Gesendet: Samstag, 20. Oktober 2012 20:04
> > An: General discussion for Windows Installer XML toolset.
> > Betreff: Re: [WiX-users] Getting started writing a custom Bootstrapper
> > interface
> >
> > Hi,
> >
> > Some more pointers from me. I've implemented a custom managed
> > bootstrapper using WinForms. The GUI actually looks pretty much the
> > same as the standard MSI setup wizard, but implemented with custom C#
> > code using MVP
> > (model-view-presenter) pattern. This enables me to unit-test the
> > wizard without actually running the installation.
> >
> > I've also "hidden" the WiX bootstrapper engine behind an adapter
> > interface (I called it IInstallEngine). This way I can run the wizard as
> a "normal"
> > Windows Forms application and click through it (again, without the
> > need to run the actual Windows installation), since in that mode the
> > wizard uses a mocked implementation of IInstallEngine. I just simply
> > added the static Main method which has the similar logic to the Run().
> >
> > (Note to Rob: perhaps it would be a good idea to change the design of
> > the managed bootstrapper so that it works with interfaces instead of
> > concrete implementations, this would be really helpful for unit
> > testing and simulation).
> >
> > The wizard has one added feature: a debug window which can be turned
> > on through the command line and displays all the install log messages
> > directly in the setup wizard.
> >
> > The documentation for the managed BS is pretty scarce, so I had to
> > look into WiX's source code and do a lot of trials and errors to get
> > to this point (and I still have some issues to work through).
> >
> > Best regards,
> > Igor Brejc
> >
> > On Fri, Oct 19, 2012 at 10:39 AM, Hans ter Horst <hoshis...@gmail.com
> > >wrote:
> >
> > > Thanks Daniel, this is precisely what I needed!
> > >
> > > On Fri, Oct 19, 2012 at 9:32 AM, Daniel Bruce
> > > <daniel.br...@prediktor.no
> > > >wrote:
> > >
> > > > To resolve Microsoft.Tools.WindowsInstallerXml.Bootstrapper, you
> > > > need to add a reference to BootstrapperCore, which in my
> > > > installation was located under C:\Program Files (x86)\WiX Toolset
> > v3.7\SDK\BootstrapperCore.dll.
> > > You
> > > > should be able to find yours in a similar location.
> > > >
> > > > You are correct that there is little information about how to get
> > > > started with Burn, and the little information there is to find is
> > > > scattered
> > > around
> > > > the net and pretty terse, so I'll give you enough to get started,
> > > > then
> > > you
> > > > should be able to look at the source code for the WiX BA to
> > > > continue (I highly recommend having the source around to look at
> > > > either way, because there is really no other way to get
> > > > information about most
> > things).
> > > >
> > > > For my WPF-based bootstrapper interface, I started a regular WPF
> > > > application project and changed its output type to "class library".
> > > > Then
> > > I
> > > > have a class that inherits from BootstrapperApplication looking
> > > > something like this:
> > > >
> > > > public class MyBA : BootstrapperApplication {
> > > >     static public Threading.Dispatcher Dispatcher { get; private
> set; }
> > > >     static public View.InstallerWindow Window { get; private set; }
> > > >     static public App TheApp { get; private set; }
> > > >
> > > >     protected override void Run()
> > > >     {
> > > >         TheApp = new App();
> > > >         TheApp.InitializeComponent();
> > > >         // Send a reference to the Application to access things,
> > > > if necessary
> > > >         TheApp.BA = this;
> > > >         MyBA.Dispatcher = Threading.Dispatcher.CurrentDispatcher;
> > > >         TheApp.Run();
> > > >         this.Engine.Quit(TheApp.ExitCode);
> > > >     }
> > > > }
> > > >
> > > > And in my WPF Application class I have code like this to bring up
> > > > a
> > > pretty
> > > > standard MVVM application window:
> > > >
> > > > public partial class App : Application {
> > > >     public View.InstallerWindow Window { get; private set; }
> > > >     public
> > > > Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperAppli
> > > > ca
> > > > tion
> > > BA
> > > > { get; set; }
> > > >     public int ExitCode
> > > >     {
> > > >         get
> > > >         {
> > > >             return state.InstallerResult;
> > > >         }
> > > >     }
> > > >
> > > >     private InstallationState state;
> > > >
> > > >     protected override void OnStartup(StartupEventArgs e)
> > > >     {
> > > >         base.OnStartup(e);
> > > >
> > > >         InstallationState state = new InstallationState(BA, ...);
> > > >         this.state = state;
> > > >         InstallerViewModel vm = new InstallerViewModel(state, ...,
> > > > Threading.Dispatcher.CurrentDispatcher);
> > > >         var Window = new View.InstallerWindow(vm);
> > > >         state.ParentHwnd = new WindowInteropHelper(Window).Handle;
> > > >         Window.Show();
> > > >         state.Initialize();
> > > >     }
> > > > }
> > > >
> > > > You also need to create a config file so the Burn managed
> > > > bootstrapper host can find your application, which should be named
> > > > something like YourAssemblyName.BootstrapperCore.config and look
> > > > something like this, replacing "YourAssemblyName" with your own
> > assembly's name:
> > > >
> > > > <?xml version="1.0" encoding="utf-8" ?> <configuration>
> > > >   <configSections>
> > > >     <sectionGroup name="wix.bootstrapper"
> > > >
> > > type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperS
> > > ec
> > > tionGroup,
> > > > BootstrapperCore">
> > > >       <section name="host"
> > > > type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.HostSection
> > > > ,
> > > > BootstrapperCore" />
> > > >     </sectionGroup>
> > > >   </configSections>
> > > >   <startup useLegacyV2RuntimeActivationPolicy="true">
> > > >     <supportedRuntime version="v4.0" />
> > > >   </startup>
> > > >   <wix.bootstrapper>
> > > >     <host assemblyName="YourAssemblyName">
> > > >       <supportedFramework version="v4\Full" />
> > > >       <supportedFramework version="v4\Client" />
> > > >     </host>
> > > >   </wix.bootstrapper>
> > > > </configuration>
> > > >
> > > > Then, finally, in your bundle.wxs file add a reference to your
> > > > assembly and put in this snippet to refer to your bootstrapper
> > > > application
> > > properly,
> > > > again replacing as necessary:
> > > >
> > > > <BootstrapperApplicationRef Id='ManagedBootstrapperApplicationHost'>
> > > >   <Payload Name='BootstrapperCore.config'
> > > >
> > >
> >
> SourceFile='$(var.YourAssemblyName.TargetDir)\YourAssemblyName.BootstrapperCore.config'
> > > > />
> > > >   <Payload SourceFile='$(var.YourAssemblyName.TargetPath)' />
> > > > </BootstrapperApplicationRef>
> > > >
> > > > Now if you want to be able to run this with F5 from Visual Studio,
> > > > you should build your bundle once first, then set your WPF
> > > > assembly as the startup project, go into its project properties
> > > > under Debug, set it to Start external program and point it to the
> > > > exe file from
> > your bundle.
> > > This
> > > > is necessary because you can't set wixprojects as startup projects.
> > > > If
> > > you
> > > > want to debug the bootstrapper application and set breakpoints and
> > > whatnot,
> > > > you need to attach to the process manually (ctrl+alt+p in my
> > > > VS2010)
> > > after
> > > > pressing F5, because of how Burn works. To facilitate this, I
> > > > created a function like this that I call at the very beginning of
> > > > my BootstrapperApplication.Run method:
> > > >
> > > > [Conditional("DEBUG")]
> > > > private void ShowDebugMessageBox() {
> > > >     MessageBox.Show("If you want to debug the Bootstrapper
> > > > Application, you should attach the debugger to the .NET process
> > > > now and click the button."); }
> > > >
> > > > Sorry if any of this got horribly mangled in transport, but
> > > > hopefully you can pick out what to do and this gives you something
> > > > to
> > work from.
> > > >
> > > > Regards,
> > > > Daniel E. Bruce
> > > >
> > > > > -----Original Message-----
> > > > > From: Hans ter Horst [mailto:hoshis...@gmail.com]
> > > > > Sent: 19. oktober 2012 09:32
> > > > > To: wix-users@lists.sourceforge.net
> > > > > Subject: Re: [WiX-users] Getting started writing a custom
> > > > > Bootstrapper interface
> > > > >
> > > > > Hello, could you please help me get started building my own
> > > > > bootstrappe DLL? It is a Wix bootstrapper newbie question, but I
> > > > > guess there are plenty of us around :-)
> > > > >
> > > > > Thanks,
> > > > >
> > > > > Hans
> > > > >
> > > > > On Thu, Oct 18, 2012 at 5:43 PM, Hans ter Horst
> > > > > <hoshis...@gmail.com>
> > > > > wrote:
> > > > >
> > > > > > Hello, I would like to add an interface to the Wix
> > > > > > bootstrapper and started Googling around but found few examples
> to get started.
> > > > > >
> > > > > > I have the following basic questions:
> > > > > >
> > > > > >    - What project template would be best to use in VS 2010 or
> > > > > > VS
> > > 2012?
> > > > I
> > > > > >    am thinking of a WPF based interface, should I select one
> > > > > > of the
> > > WPF
> > > > > >    library project templates? Or should I pick the plain
> > > > > > vanilla DLL
> > > > > template
> > > > > >    and build on that?
> > > > > >    - I started playing around a little already with a simple
> > > > > > project
> > > > and
> > > > > >    the line of code* **using
> > > > > >    Microsoft.Tools.WindowsInstallerXml.Bootstrapper;* ran into
> > > > > > a
> > > > > missing
> > > > > >    reference, I couldn't find any reference that would resolve
> > > > > > this,
> > > > what
> > > > > >    assembly do I add?
> > > > > >
> > > > > > Thanks,
> > > > > >
> > > > > > Hans.
> > > > > > --
> > > > > > http://monochrome.me.uk/blog/
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > http://monochrome.me.uk/blog/
> > > > >
> > > >
> > > --------------------------------------------------------------------
> > > --
> > > --------
> > > > > Everyone hates slow websites. So do we.
> > > > > Make your web apps faster with AppDynamics Download AppDynamics
> > > > > Lite for free today:
> > > > > http://p.sf.net/sfu/appdyn_sfd2d_oct
> > > > > _______________________________________________
> > > > > WiX-users mailing list
> > > > > WiX-users@lists.sourceforge.net
> > > > > https://lists.sourceforge.net/lists/listinfo/wix-users
> > > > >
> > > > > _______________________________________________________
> > > > > _______________
> > > > > This email has been scanned by the Symantec Email Security.cloud
> > > > > service.
> > > > > For more information please visit http://www.symanteccloud.com
> > > > > _______________________________________________________
> > > > > _______________
> > > >
> > > >
> > > >
> > > --------------------------------------------------------------------
> > > --
> > > --------
> > > > Everyone hates slow websites. So do we.
> > > > Make your web apps faster with AppDynamics Download AppDynamics
> > > > Lite for free today:
> > > > http://p.sf.net/sfu/appdyn_sfd2d_oct
> > > > _______________________________________________
> > > > WiX-users mailing list
> > > > WiX-users@lists.sourceforge.net
> > > > https://lists.sourceforge.net/lists/listinfo/wix-users
> > > >
> > >
> > >
> > >
> > > --
> > > http://monochrome.me.uk/blog/
> > >
> > > --------------------------------------------------------------------
> > > --
> > > -------- Everyone hates slow websites. So do we.
> > > Make your web apps faster with AppDynamics Download AppDynamics Lite
> > > for free today:
> > > http://p.sf.net/sfu/appdyn_sfd2d_oct
> > > _______________________________________________
> > > WiX-users mailing list
> > > WiX-users@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/wix-users
> > >
> >
> > ----------------------------------------------------------------------
> > -------- Everyone hates slow websites. So do we.
> > Make your web apps faster with AppDynamics Download AppDynamics Lite
> > for free today:
> > http://p.sf.net/sfu/appdyn_sfd2d_oct
> > _______________________________________________
> > WiX-users mailing list
> > WiX-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/wix-users
> >
> >
> >
> >
> > ----------------------------------------------------------------------
> > -------- Everyone hates slow websites. So do we.
> > Make your web apps faster with AppDynamics Download AppDynamics Lite
> > for free today:
> > http://p.sf.net/sfu/appdyn_sfd2d_oct
> > _______________________________________________
> > WiX-users mailing list
> > WiX-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/wix-users
> >
>
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics Download AppDynamics Lite for
> free today:
> http://p.sf.net/sfu/appdyn_sfd2d_oct
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_sfd2d_oct
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to