Visual Studio 2008, installer custom actions debuggen.

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Topicstarter
Hi,

Ik heb een standaard Visual Studio 2008 setup project.

Ik heb een custom action, die afgevuurd wordt (ik kan naar de event log schrijven).

Maar aangezien de action nogal complex is wil ik graag deze debuggen.

De (versimpelde) code:

C#:
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
34
35
namespace InstallerActions
{
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Configuration.Install;
    using System.Diagnostics;
    using System.IO;

    [RunInstaller(true)]
    // ReSharper disable UnusedMember.Global
    public partial class DatabaseInstallerAction : Installer
    // ReSharper restore UnusedMember.Global
    {
        public DatabaseInstallerAction()
        {
            this.InitializeComponent();
        }

        public override void Install(IDictionary stateSaver)
        {
            base.Install(stateSaver);

            System.Diagnostics.Debugger.Launch();
            System.Diagnostics.Debugger.Break();

            Foo();
        }

        private static void Foo()
        {
            
        }
    }
}
Zoals jullie zien probeer ik dus de debugger aan de installer te hangen.

Geen van deze statements werken (er wordt gewoon overgestapt). Ik heb al geprobeerd in debug en release mode te testen.

Ik heb zelfs geprobeerd bij het starten van de installatie Visual Studio 2008 manueel aan de installer te hangen (control + alt + p). Maar geen van deze oplossingen zorgt ervoor dat ik mijn code kan debuggen.

Iemand hier the magic key? Aangezien Google mij alleen deze 3 oplossingen vertelt.

Thanks in advance!

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Topicstarter
En na 38 keer mijn code te herschrijven vind ik hier de oplossing.

base.Install mag pas als LAATSTE worden aangeroepen. Blijkbaar wordt de code NA base.Install niet uitgevoerd... Gek. Echt gek.

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Apart:
C#:
1
2
3
4
5
6
7
// Override the 'Install' method of the Installer class.
public override void Install( IDictionary mySavedState )
{
   base.Install( mySavedState );
   // Code maybe written for installation of an application.
   Console.WriteLine( "The Install method of 'MyInstallerSample' has been called" );
}

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Topicstarter
Yup, daarmee dat ik het altijd op de eerste regel deed. Ik ga eens een event loggen NA de base.Install. Eens zien of dat WEL werkt.

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Nu online
Al onze code staat eigenlijk altijd na de base.Install() aanroep. Vroeger ook vaak zat gedebugged met debugger.break() (debugger.launch() is volgens mij niet nodig), nooit problemen mee gehad. Werkt debugger.break() wel als je het ergens anders in je code zet?

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Topicstarter
Voor zover ik kan zien wordt die code WEL uitgevoerd na base.Install(), alleen werkt een Debugger.Break() statement niet meer dan.

Very weird.

Going for adventure, lots of sun and a convertible! | GMT-8

Pagina: 1