Entwickler-Ecke

WPF / Silverlight - Installation einer .Net Anwendung mithilfe von WPF (WiX)


c#ler - Mi 08.01.14 16:15
Titel: Installation einer .Net Anwendung mithilfe von WPF (WiX)
Hallo,
Ich habe 2 Installer (.msi), welche in einem WPF-Basierten Setup seperat installiert werden sollen.

Genauer:
Ich möchte ein WPF Form, mit 2 Buttons (A und B).
Beim Klick auf Button A soll der Installer von Anwendung A gestartet werden, bei Klick auf Anwendung B.....

Die Beiden Msi's funktionieren. Das WPF Form ist auch bereits entworfen und besitzt ein OnButtonClick, welches über die Contentbezeichnung des Buttons erkennt, welcher Button gedrückt wurde.
Problem an der Stelle ist, dass an der Stelle der Installer (für Anwendung A )gestartet werden soll.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
#region OnButtonClick
        /// <summary>Handles the event of a button being clicked.</summary>
        /// <param name="sender">The sender of the event.</param>
        /// <param name="e">The arguments of the event.</param>
        private void OnButtonClick(object sender, RoutedEventArgs e)
        {
            InstallData.IsBusy = true;
            Button btn = sender as Button;

            if (btn != null && btn.Content != null && Bootstrapper != null && Bootstrapper.Engine != null)
            {
                switch (btn.Content.ToString().ToUpperInvariant())
                {
                    case "Anwendung A installieren"
                    { 
                        Bootstrapper.Engine.Plan(Wix.LaunchAction.Install); 
                    } 
                    break;

                    case "Anwendung B installieren"
                    { 
                        Bootstrapper.Engine.Plan(Wix.LaunchAction.Install); 
                    } 
                    break;


                    case "UNINSTALL": { Bootstrapper.Engine.Plan(Wix.LaunchAction.Uninstall); } break;
                    case "QUIT": { Close(); } break;
                    defaultbreak;
                }
            }
            else { InstallData.IsBusy = false; }
        }


Bitte Hilfe !


Ralf Jansen - Mi 08.01.14 16:28

Ähm, Process.Start("meinLiebesAnderesMSIPaket.msi")?


c#ler - Mi 08.01.14 16:43

user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Ähm, Process.Start("meinLiebesAnderesMSIPaket.msi")?

Sorry, fehler meinerseits.
Gute Idee, aber das Setupprojekt ist ein Bootstrapper.


Ralf Jansen - Mi 08.01.14 16:52

Bootstrapper wäre ja noch egal aber du willst sagen der Code denn du ausführst steckt selbst in einem MSI?


c#ler - Mi 08.01.14 17:11

user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Bootstrapper wäre ja noch egal aber du willst sagen der Code denn du ausführst steckt selbst in einem MSI?

Der MSI enthält unter anderem die UI's für dessen Installation ja^^.


Ralf Jansen - Mi 08.01.14 17:47

Dann geht das vermutlich nicht. MSIs gehen nur nacheinander. Du könntest maximal beim Button Click einplanen das nach deinem MSI das entsprechende andere MSI gestartet wird. Das sind dann aber natürlich auch 2 Installationstransaktionen.