Darkleo’s Blog
Ein Schatz, der seinen Besitzer überallhin begleitet.

Msi und msiexec

November 18th, 2007 by darkleo

Hab heute mit MSI Installer gearbeitet und msiexec kennenlernen müssen.

msiexec /Option [Optionale Parameter]Installationsoptionen
/i Produkt.msi

Deinstalliert das Produkt.
Produkt.msi | Produktcode

Anzeigeoptionen
/quiet

Hintergrundmodus, keine Benutzerinteraktion
/passive

Unbeaufsichtigter Modus - Nur Statusleiste
/q[n|b|r|f]

Legt die Benutzeroberfläche fest.
n - Keine Benutzeroberfläche
b - Einfache Benutzeroberfläche
r - Reduzierte Benutzeroberfläche
f - Vollständige Benutzeroberfläche (Standard)

/help
/l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*]

i - Statusmeldungen
w - Nicht schwerwiegende Warnungen
e - Alle Fehlermeldungen
a - Ausführung von Aktionen
r - Aktionsspezifische Einträge
u - Benutzeranforderungen
c - Ursprüngliche Benutzeroberflächenparameter
m - Informationen betreffend zuwenig Arbeitsspeicher oder schwerwiegendem Abbruch
o - Meldungen betreffend zuwenig Speicherplatz
p - Terminaleigenschaften
v - Ausführliche Ausgabe
x - Zusätzliche Debuginformationen
+ - An vorhandene Protokolldatei anhängen
! - Jede Zeile ins Protokoll aufnehmen
* - Alle Informationen mit Ausnahme der Optionen v und x protokollieren/log|/l*

 Aktualisierungsoptionen
/update [;Update2.msp]Übernimmt Update(s).
/uninstall

[;Update2.msp] /package

 Entfernt Update(s) für ein Produkt.
Reparaturoptionen/f[p|e|c|m|s|o|d|a|u|v]

 Repariert ein Produkt.
p - nur wenn eine Datei fehlt
o - wenn eine Datei fehlt oder eine ältere Version installiert ist (Standard)
e - wenn eine Datei fehlt oder eine gleiche bzw. ältere Version installiert ist
d - wenn eine Datei fehlt oder eine andere Version installiert ist
c - wenn eine Datei fehlt oder die Prüfsumme nicht mit dem berechneten Wert übereinstimmt
a - Erzwingt die Neuinstallation aller Dateien
u - Alle erforderlichen benutzerspezifischen Registrierungseinträge (Standard)
m - Alle erforderlichen Computerspezifischen Registrierungseinträge (Standard)
s - Alle vorhandenen Verknüpfungen (Standard)
v - Führt von der Quelle aus und speichert das lokale Paket zwischen

Posted in Tools | No Comments »

Anonyme Methoden und ihr Einsatz

November 18th, 2007 by darkleo

Was sind anonyme Methoden?
Einfach gesagt bieten diese Methoden eine Möglichkeit, einen Codeblock als Delegatparameter zu übergeben.

button1.Click += delegate(System.Object o, System.EventArgs e)
// anonyme Methode
  {
  System.Windows.Forms.MessageBox.Show("Click!");
  };

Der Code ist nicht mehr mit einem Methodenbezeichner namentlich verbunden und wird deshalb als anonyme Methode bezeichnet.

Vorteil:
Durch anonyme Methoden wird der Codierungsaufwand des Instanziierens von Delegaten reduziert, weil keine separaten Methoden mehr erstellt werden müssen.

Einsatz von Anonymen Methoden in Listen ab .NET 2.0:
//
Wir erstellen eine Klasse Person
public class Person
{
       public int alter;
       public string name;
       public Person(string name,int alter)
      {
          this.alter = alter;
          this.name = name;
       }
}

Wir erstellen eine Liste von Personen
List<Person> people = new List<Person>();
people.Add(new Person(50, "Eric"));
people.Add(new Person(25, "Guido"));
people.Add(new Person(24, "Matthias"));
people.Add(new Person(26, "Paul"));

Console.WriteLine("Liste");
people.ForEach(delegate(Person p) { Console.WriteLine(String.Format("{0} {1}", p.alter, p.name)); });

List<Person> young = people.FindAll(delegate(Person p) { return p.alter < 25; });
Console.WriteLine("Alter kleiner als 25");
young.ForEach(delegate(Person p) { Console.WriteLine(String.Format("{0} {1}", p.alter, p.name)); });

Console.WriteLine("Sortierte Liste nach Name");
people.Sort(delegate(Person p1, Person p2) { return p1.name.CompareTo(p2.name); });
people.ForEach(delegate(Person p) { Console.WriteLine(String.Format("{0} {1}", p.alter, p.name)); });

people.Sort(delegate(Person p1, Person p2) { return p1.alter.CompareTo(p2.alter); });
Console.WriteLine("Sortierte Liste nach Alter");
people.ForEach(delegate(Person p) { Console.WriteLine(String.Format("{0} {1}", p.alter, p.name)); });

Ausgabe:
Liste
50 Eric
25 Guido
24 Matthias
26 Paul
22 Marcel
Alter kleiner als 25
24 Matthias
22 Marcel
Sortierte Liste nach Name
50 Eric
25 Guido
22 Marcel
24 Matthias
26 Paul
Sortierte Liste nach Alter
22 Marcel
24 Matthias
25 Guido
26 Paul
50 Eric

Einsatz von Anonymen Methoden in Arrays ab .NET 2.0:
Die Anonymen Methoden gibt es auch noch in der Systemklasse Array, mit folgenden Methoden:
BinarySearch
ConvertAll
Exists
Find
FindAll
FindIndex
FindLast
FindLastIndex
ForEach
Sort
TrueForAll

Person[] personen = new Person[5];
personen[0] = new Person( "Eric",50);
personen[1] = new Person( "Guido",25);
personen[2] = new Person("Matthias", 24);
personen[3] = new Person("Paul", 26);
personen[4] = new Person("Marcel", 22);

Console.WriteLine("Liste");
Array.ForEach<Person>(personen, delegate(Person p) { Console.WriteLine(String.Format("{0} {1}", p.alter, p.name)); });

...

Ausgabe:
Liste
50 Eric
25 Guido
24 Matthias
26 Paul
22 Marcel

Posted in .NET, C# | No Comments »

MessageBox mit Vista Lockeffekt

November 15th, 2007 by darkleo

vistalockeffekt

So sieht die Benutzung am Ende aus:

this.LockSystemAndShow(new Form(), delegate (){
MessageBox.Show("Nachricht mit Vista Effekt",
                                
"Beschreibung",
                                 
MessageBoxButtons.YesNoCancel);
});

Download Source

Posted in C# | No Comments »

Zeitmessungen mit Monitoren

November 14th, 2007 by darkleo

public class Monitor : IDisposable
{
 System.Diagnostics.
Stopwatch sw;
 string prefix;
 public Monitor(string prefix)
 {
 this.prefix = prefix;
 sw = System.Diagnostics.
Stopwatch.StartNew();
 }
 public static Monitor Create(string prefix)
 {
return new Monitor(prefix); }

 public void Dispose()
 {
  Console.WriteLine(prefix + sw.ElapsedMilliseconds + " ms"); }
}

HowToUse:

using (Monitor monitor = Monitor.Create("Dauer: "))
{
 for (int i = 0; i < 100000; i++)
 {
//mach was
 }
}
//Dauer XXXXX ms

Posted in .NET, C#, Performance | No Comments »

Berechnungen von Funktionen unter C#

November 14th, 2007 by darkleo

Eval  JScriptEvaluate vs DataTable Compute

 
using (System.Data.DataTable t = new System.Data.DataTable())
{
Console.WriteLine((a+b)/b =” + t.Compute((20+10)/10″, null));// 3.0
} 
 
Microsoft.JScript.Vsa.VsaEngine JEngine=
Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
Microsoft.JScript.Eval.JScriptEvaluate((20+10)/10″, JEngine);//3.0

Was ist schneller?
Bei einem Loop von 1.000.000 ist das Ergibnis:
DataTable Compute:  10.000 ms
Eval  JScriptEvaluate: 27.000 ms

Download Source

Posted in .NET, C#, Performance | No Comments »

Blog blog blog und noch ein blog

November 14th, 2007 by darkleo

wieso das alles? gibt es nicht schon genug Blog's?

Ich denke,  dass ich in diesem Blog versuchen werde etwas zu sagen und mit jedem Eintrag meine Erkenntnisse hier zeige und den Leuten in guter Qualität Informationen zur Verfügung stelle die sie wo anders nur mühsam bekommen würden.

Um in diesem Blog zu schreiben benutze ich Live Writer:

http://www.live-writer.de/project/WindowsLiveWriterDownload.aspx

Posted in Allgemein, Tools | No Comments »

MVC/MVP Frameworks

November 12th, 2007 by admin

Müsste mich mit den MVC-Frameworks auseinandersetzten und hier ist die Liste der Frameworks.

Knapp die Unterschiede zwischen Model-View-Controller und Model-View-Presenter:
mvc-or-mvp-pattern-whats-the-difference.aspx
development-trivial-pursuit-the-difference-between-mvc-and-the-different-flavors-of-mvp.aspx

Sehr schön ist auch dieser Artikel:
http://ctrl-shift-b.blogspot.com/2007/08/interactive-application-architecture.html

UIP
http://msdn2.microsoft.com/en-us/library/ms979217.aspx

ASP.NET MVC Framework
http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx

Maverick.NET (Opensource)
http://mavnet.sourceforge.net/

Web Client Software Factory (Opensource)
http://www.codeplex.com/websf

MonoRail (Opensource)
http://www.castleproject.org/monorail/index.html

Castle Igloo (Opensource)
http://www.ayende.com/Blog/archive/6918.aspx

Spring.NET (Opensource)
http://www.springframework.net

openSEAL (Opensource)
http://openseal.sourceforge.neta>

NStruts (Opensource alpha)
http://www.codeplex.com/nstruts

ViewControl (mit Support)
http://www.statesoft.com

Posted in MVC/MVP | No Comments »

Hallo an alle Leute, wie gehts euch heute?

November 12th, 2007 by admin

jede große Internet-Wissens-Reise beginnt mit einem kleinen Blog.

Posted in Allgemein | No Comments »

Next Entries »