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

Reply via email to