AW-SYSTEMS GmbH
Home   |    Unternehmen   |    News & Presse   |    Kontakt   |    Anfahrt
 
  Innovative IT-Lösungen für Ihren Erfolg
Entwicklung - Bereich AW-SYSTEMS Forschung - Bereich AW-RESEARCH Experten - Bereich AW-EXPERTS Experten - Bereich AW-CREATIVE Grafik - Bereich AW-TECHNICS Produkte - it4yourbusiness
Team Blog
 
Kategorien
Diese Liste enthält keine Elemente.
Andere Blogs
Diese Liste enthält keine Elemente.
Team Blog
Saubere Deinstallation einer Anwendung mit InstallShield

Benutzt man InstallShield für die Erstellung seiner Installationen muss man einen wichtigen Punkt für die Deinstallation beachten.

InstallShield löscht NUR Files die es auch installiert hat!

Hat man nun eine Anwendung die z.B. ein Log-File schreibt so entsteht das Log-File nach einer Installation und bleibt somit nach der Deinstallation erhalten.

Lösung des Problems ist:

  • Schreiben einer InstallScript Funktion die die Entsprechenden Files Löscht.
    • Zum Löschen der Files ist die Funktion DeleteFile
  • Anlegen einer Benutzerdefinierten Aktion die die oben genannte Funktion aufruft
  • Benutzerdefinierte Aktion in der Installationsausfürungssequenz "Nach RemoveFiles" starten.

Wichtig ist die Installationsausfürungssequenz. Nach der Installationsausfürungssequenz "RemoveFiles" startet die Sequenz "RemoveFolders". Ist in einem der Verzeichnisse noch ein File enthalten so wird dies nicht gelöscht!

Aus einem Flash ActionScript ein Prozess starten

Oft werden CD-Startups in Flash erstellt. Nun Steht man vor dem Problem eine Installation oder ein Programm aus der Flash-Oberfäche zu starten. Per Action Script ist dies sehr einfach mit der Funktion :

fscommand("exec", "PfadZurAnwendung.exe");

möglich.

Seit Flash mx ist dies nur möglich wenn die Zustartendeanwendung sich in einem Unterordner der Flashanwendung befindet.

Lösung für das Problem:

1. Eine Batchdatei schreiben die die Anwendung startet.

2. Die Batchdatei in einen Unterordner der Flashanwendung legen.

3. Aus dem Script die Batchdatei starten.

WCF Client Probleme wie Communication Aborted oder TIME_WAIT

Es gibt viele Wege die Implementierung eines Clients in der WCF zu realisieren doch nur wenige sind die richtigen :-/

  • Möglichkeit A ist es einen Channel beim starten der Client Anwendung zu erstellen, mit ihm zu kommunizieren und beim beenden der Anwendung den Channel zu schließen.
    •    Problem:
      • Der Channel bleibt nur eine Begrenzte Zeit offen (Per Default 10 min). Am Channel gibt es ein Property an dem man dies einstellen kann was aber keine Lösung des Problems ist

  • Möglichkeit B ist es den Channel vor einem gebrauch zu öffnen und danach wieder zu Schließen (Empfehlung von Microsoft). Siehe Sample:

    IMyServiceContract myChannel = ChannelFactory<IMyServiceContract>.CreateChannel(MyBinding,MyAddress);
    try{
        myChannel.MyMethod();
    }
    finally{
        ((IClientChannel) myChannel).Close();
    }

    •    Problem:
      • Für jeden auf und zu gemachten Channel geht ein Port auf, der nach dem Schließen im zustand TIME_WAIT sich befinden. Das Port geht nach einer Standart Zeit von 120 sekunden zu doch dies ist doch auch keine richtige Lösung eines Problems oder?

  •   Möglichkeit C ist: Man benutzt nicht die Statische methode der ChannelFactory den diese ist nach einem ObjectPool Pattern aufgebaut. Das heist man öffnet einmal die ChannelFactory beim Starten seiner Anwendung, erstellt für jede Kommunikation einen Channel den man nach der Operation wieder Schließt und beim beenden der Anwendung die ChannelFactory schließen nicht vergessen.  Die Statische CreateChannel Methode erstellt übrigens eine ChannelFactory und danach durch die Factory einen Channel. Da in diesem Fall bei jedem ChannelFactory<IMyServiceContract>.CreateChannel() eine neue Factory erstellt wird wird auch keine Verbindung aus einem Globalen Pool genommen sondern ein neuer leerer Pool erstellt und somit geht wieder ein Port auf.
    •    Problem:
      • Kein bekanntes Problem bei dieser Methode
XT-Commerce (XTC) und WYSIWYG

Sollten einmal Probleme mit den herrlichen WYSIWYG Editoren in einem XT-Commerce-Shop auftreten, kann man dies global für den Shop in der Tabelle "configuration" abschalten. Der configuration-key lautet "USE_WYSIWYG" und ist anscheindend nicht über die Oberfläche zu ändern.

Auslöser für diesen kleinen Exkurs war die lustige Fehlermeldung Error: The TEXTAREA id "message" was not found beim senden einer EMail an einen Shop-Kunden.

Visual Studio hat keine Projekttemplates mehr

Ein Problemm nach der Installation eines Updates für das VS 2005 ist aufgetreten.

Die Projekttemplates sind verschwunden.

Mit einem commandozeillen Befehl kann man seine Templates wieder restaurieren.

devenv /installvstemplates >

Visual Studio Form-Designer kann nicht geladen werden

Häufig treten im VS-Designer folgende Fehler auf:

One or more errors encountered while loading the designer. The errors are listed below. Some errors can be fixed by rebuilding your project, while others may require code changes.

  • The designer could not be shown for this file because none of the classes within it can be designed. The designer inspected the following classes in the file: <..> --- The base class '<..>' could not be loaded. Ensure the assembly has been referenced and that all projects have been built.
  • Exception of type <..> was thrown.
  • The designer must create an instance of type <..> but it cannot because the type is declared as abstract.

Diese Fehler treten meist auf, wenn Formulare vererbt werden. Bei einer Form, die direkt von Form erbt, kann man dieses Phänomen nicht beobachten.

Zu den ersten beiden:

Der Designer erstellt die Forms per Reflaction. Das heisst, er muss eine Instanz der Klasse dynamisch erstellen. Wenn man den Konstruktor oder das FormLoad event überschreibt und dort z.B. auf eine Datei zugreifen möchte, dann versucht der VS Designer natürlich auch diese Datei zu laden. Problem ist dann aber auch, dass der Designer im Verzeichnis der Visual Studio 2005 Installation nach der Datei sucht und diese dort nicht findet.

Lösung:

   Jedes Control besitzt besitzt ein Property DesignMode 

   man kann also einfach im OnLoad event oder im Konstruktor mit folgenden Zeilen Code das Problem lösen:

   if>( !this.DesignMode )

>      return;

>>>

Zu dem Letzten Punkt:

Da der Designer auch das BasisForm laden muss, dieses aber als abstract defeniert ist, raten wir dazu das abstrakt zu entfernen.

Wer es unbedingt braucht, kann dies mit folgenden Code lösen:

#if DEBUG>

public partial class Form2 : Form>

#else

public abstract partial class Form2 : Form1

#endif

Ein x86 Assembly mit .Net 2.0 x64 und 64-Bit Windows ausführen

Bei bestehenden .NET-Anwendungen besteht ggf. das Problem das sie Win32-Dlls verwenden, welche
auf einem 64-Bit Betriebsystem mit dotNet 2.0 x64 nicht mehr in einem 32-Bit Prozess ausgeführt werden.

Somit gibt es die folgende Exception:

System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

Ist ja auch klar, da versucht wird in einem 64-Bit Prozess eine 32-Bit DLL zu laden.

Lösung:

1.) Wenn man die Chance hat neu zu kompilieren gibt es die Möglichkeit unter den Build-Einstellungen
des VisualStudios 2005 unter "Platform Target" die Wert von AnyCPU auf x86 zu stellen.

2.) Wenn man die Chance zum neu kompilieren nicht hat gibt es im dotNet-Framework SDK ein Tool mit
dem Namen corflags.exe. Mit diesem Tool ist man in der Lage den CLR-Header so zuverändern das der Compilerschalter x86
im Nachgang gesetzt werden kann. Dies ist durch folgenden Aufruf möglich:

corflags /32BIT+ /force test.exe

Sollte das Assembly einen StrongName besitzen entsteht hier aus ein weiteres Problem, da der Hashwert des Assemblys
nun nicht mehr stimmt muss es neu signiert werden, hierzu ist der Privat-Key erforderlich und das Tool sn.exe welches
ebenfalls im SDK zufinden ist.

sn -R test.exe test.snk

Nach diesen zwei Aufrufen sollte eine mit StrongName signierte Assembly auf die Ausführung als 32-Bit Anwendung
in einem 64-Bit Windows und mit einem .Net 2.0 x64 vorbereitet sein, so das auch Win32-DLLs in diesen Prozess geladen
werden können.

Tooltip mit Bildern

Tooltips sind ja eine tolle sache.

Wem die Gelben Kästen aber zu öde sind kann sie nun richtig gestalten.

Im Prinzip kann man nun mit ein bisschen JavaScript eine ganze HTML-Seite als Tooltip ausgeben.

Tooltip-Designer bitte hier lang.

Fehler bei SBS2003 und RDP-Verbindung

Wieder einmal sind Stunden der Fehlersuche bei einem Kunden ins Land gegangen um folgendes Szenario zu klären:

Es wurde auf einem neuen System ein Windows-Server 2003 Small Business installiert, welcher natürlich
im erweiterten Setup die Sharepoint-Services, den Exchange und so weiter installiert.

Egal ob Release 1 oder Release 2 vom MS Small-Business-Server 2003, versucht man von einem Client (z.B. Win XP)
eine RDP (Remote Desktop Verbindung) zum Server auf zubauen gibt es eine der folgenden Meldungen:

"Because of a protocol error, this session will be disconnected. Please try connecting to the remote computer again."
"Die Sitzung wurde wegen eines Protokollfehlers getrennt. Versuchen Sie, die Verbindung mit dem Remotecomputer wiederherzustellen."
oder
"Because of a protocol error (error_code), the remote session will be disconnected. Please try connecting to the remote computer again."
"Die Sitzung wurde wegen eines Protokollfehlers (Fehlercode) getrennt. Versuchen Sie, die Verbindung mit dem Remotecomputer wiederherzustellen."

Die Ursache für das Problem liegt ggf. bei einer im IIS automatisch installierten Website, welche bei der Installation des SBS 2003 dort
installiert wurde.
In dem Fall des Kunden war es die Administrations-Webseite des Sharepoint-Administrators welche unglücklicher Weise ebenfalls an dem Port 3389 lauschte ;-).

Also ganz einfache Lösung Website auf ein anderes Port legen und die RDP-Verbindung funktioniert wieder, ohne Probleme!!

Firefox OHNE GoogleToolbar
Wer seinen Browser schön schlank liebt und ihn ohne irgendwelche zusatzsachen wie die GoogleToolbar haben will hat es schwer!!
Gibt man bei Google Firefox an bekommt man downloads nur mit der GoogleToolbar ( ist ja auch klar wenn man bei google sucht ).
Hier ein Link mit dem Browser ohne dieses tolle zusatzpaket

http://www.mozilla-europe.org/de/products/firefox/
1 - 10 Weiter

 ‭(Ausgeblendet)‬ Administratorhyperlinks

Kontakt |  Sitemap |  Impressum Copyright © 2009 AW-SYSTEMS GmbH. Alle Rechte vorbehalten.