Über die Notwendigkeit der Deinstallation und andere Widrigkeiten der Installation

Inzwischen habe ich mich dazu durchgerungen bei VCR.NET zu empfehlen, vor einer Neuinstallation die vorherige Version zu deinstallieren – die verbleibenden Konfigurationsdateien sorgen dafür, dass die darauf folgende Installation mit den alten Einstellungen sofort loslegen kann.

Tatsächlich ist die Installation dafür vorgesehen, automatisch eine vorhandene Version zu deinstallieren und eine Installation unter Beibehaltung der Konfiguration durchzuführen. Das klappt auch – fast immer. Leider hat .NET ein paar Fallstricke, die ich zwar versuche, zu umgehen, aber ich bin mir nicht sicher, ob ich immer daran denke, denn wie gleich beschrieben ist es etwas lästig.

Die VCR.NET Installation erfolgt auf Basis eines MSI Setup Projektes, dass von Visual Studio 2005 angeboten wird. Da neben dem reinen Kopieren auch spezifischer Code ausgeführt werden muss, enthält das Projekt auch eine Installationskomponente und da liegt der Haken. Wenn eine Deinstallation ausgeführt wird, so muss diese Komponente geladen und ausgeführt werden – schön und gut. Genauso bei der Installation – auch klar, also wo liegt das Problem? Wenn Deinstallation und Installation in einem Schritt erfolgen und die Installationskomponente den gleichen Namen trägt, dann wird die Assembly im neuen MSI für die Installation nicht geladen – ist ja schon eine Assembly mit gleichem Namen im Speicher, wird schon die selbe sein, denkt sich .NET wohl. Ist es aber oft nicht! Darum muss ich bei jeder Änderung an der Installation (und das war für die 3.0 so einiges an Kleinkram) die Installationskomponente umbennen (der Name heute ist JMS.DVBVCR.Installer-14.dll, keine Ahnung, ob das im 3.0 Final auch so sein wird). Wenn ich das vergessen, passieren komische Dinge bei denjenigen, die genau ein Upgrade zwischen den Versionen machen, die den gleichen Namen aber unterschiedlichen Code für die Installationskomponente enthalten.

Genauso kann (aus anderen Gründen) keine Deinstallation auf Basis von .NET 1.1 (VCR.NET 2.6 oder früher) auf eine .NET 2.0 Version (2.7 oder später) in einem Schritt erfolgen. Wieder eine Ausnahme, die man erklären muss.

Wie gesagt: im Prinzip ist das Problem verstanden und im Griff, aber wer einfach nicht nachdenken möchte, macht erst mal die Deinstallation. Ich glaube sogar nicht mal, dass das viel langsamer ist.

Ja, und dann noch ein .NET Spielchen: bei der ersten Installation einer 3.0 Variante muss ein DVB.NET Geräteprofil ausgewählt werden. Um das zu vereinfachen, habe ich einen kleinen Assistenten gebastelt. Leider kennt die Installation nicht das Konzept des Hauptfensters einer Anwendung nicht (naja: vielleicht habe ich es auch nicht gefunden) und der Assistent wird ohne Owner / Parent geöffnet. Trotz diverser Anstrenungen (Top Fenster, ganz nach vorne geholt, …) passiert es ab und zu immer noch, dass der Assistent hinter dem Installationsfenster geöffnet ist und unsichtbar bleibt, bis man das Installationsfenster wegschiebt. Die Suche habe ich vorerst aufgegeben: der Assistent erscheint nun in der Windows Taskbar (wollte ich eigentlich vermeiden), so weiß man wenigstens, dass da was ist und kann ihn damit nach vorne holen.

So long

Jochen

Wenn man denkt, man wäre fertig…

Eben mal noch schnell testen, ob der VCR.NET mit dem Schlafzustand (Hibernate, S4) und dem Aufwachen auch richtig umgehen kann und dann ist die Beta fertig. Sieht auf den ersten Blick gut aus, auf den zweiten aber nicht: nach dem Aufwachen findet die TechnoTrend S2-3200 keine Sender – leider ein bekanntes Problem der BDA Treiber. Das hat zwar nichts mit VCR.NET zu tun, kann ich aber so auch nicht herausgeben.

Dafür ist in DVB.NET 3.0 ein interessantes Zusatzfeature entstanden: für die BDA Hardware Abstraktion kann nun eine Einstellung ResetAfterWakeup gesetzt werden (für alle TechnoTrend Budget Karten inklusive der S2-3200 passiert das erst einmal automatisch). Diese führt dazu, dass in der neuen Methode WakeUp der Abstraktion der Tuner deaktiviert (Disable im Gerätemanager) und wieder aktiviert (Enable) wird. Der VCR.NET ruft diese Methode nun immer vor der ersten Aufzeichnung nach dem Aufwachen aus dem Schlafzustand auf und erreicht so auch mit der S2-3200 zuverlässige Aufzeichnungen.

Neue Option in der Profilverwaltung

Im Gegensatz zu früher (der VCR.NET hatte mal so eine ähnliche Funktionalität für die TechnoTrend Premium Line 2.19 Beta Treiber) passiert das aber nur, wenn der VCR.NET es braucht. Andere Anwendungen hätten nach dem Aufwachen weiterhin das Problem und können die Karte nicht nutzen. Ich denke, für VCR.NET 3.0 werde ich das nicht einbauen aber man kann sich relativ einfach vorstellen, dass in einer zukünftigen Version der VCR.NET diese Reaktivierung einfach für alle eingebundenen Geräteprofile direkt nach dem Aufwachen macht. Hier muss man nur etwas mit dem Timing aufpassen: früher war das einfach, da am VCR.NET nur eine Karte hing!

Jochen

Erste echte Beta in Sicht…

Ich habe gerade die Grundfunktionalitäten von VCR.NET 3.0 Recording Service und Manager (jetzt neu: VCR.NET Control Center) so weit fertig gestellt, dass praktisch alle relevante Funktionalität der Vorgängerversion enthalten ist (Ausnahmen: Betrachten laufender Aufzeichnungen hackelt noch sehr; NVOD Anzeige zur laufenden Aufzeichnung; Extensions im Recording Manager). Ich muss allerdings noch zwei Kernfunktionalitäten selbst testen (Hibernate und Aufwachen; Sendersuchlauf mit mehreren, abhängigen Geräteprofilen), dann wäre es so weit… Allerdings kann ich aufgrund der wesentlichen Veränderungen das Ganze nicht ohne eine aktualisierte Installationsbeschreibung herausgeben, darum wird es wohl doch noch Ende der Woche werden.

Bis dann

Jochen

Endspurt

Gerade jetzt lade ich den Release Candidate von DVB.NET 3.0 hoch, ich werde in den nächsten Tage die Release Notes aktualisieren und einen Post dazu im Forum machen. Auch wenn (mal wieder) nicht alle gewünschten Features realisiert wurden, hat DVB.NET doch einen guten Schritt nach vorne gemacht. Ich denke, dass der aktuelle Download wirklich funktional vollständig ist. An einer Freigabe fehlen eigentlich noch die Synchronisation mit VCR.NET 3.0 (vielleicht fehlt ja doch noch was – glaube ich nicht) und die Aktualisierung der Dokumentation / Homepage (sehr lästig, kostet wieder einen Tag oder 3 – 4 Abende).

Jochen

BDA – ein kleiner Meilenstein

So, nun rückt DVB.NET 3.0 endlich näher. Ich habe ein wesentliches Stück der BDA Implementierung verändert. Wie die meisten anderen DVB / BDA Anwendungen auch (!) verläßt sich DVB.NET und damit VCR.NET nun wesentlich weniger auf die Microsoft Komponenten und zerlegt den nackten TS Strom selbst. Im Zusammenspiel mit der TechnoTrend S2-3200 (die Nova-S Plus muss ich noch testen, ist ein anderes System) sind nun Sendersuchläufe zuverlässig wie bei der Nexus und auch fast so schnell (ich schätze rund 4-5mal schneller als früher).

Für Entwickler ist eine Klasse TSParser abgefallen, die einen TS Datenstrom nimmt und in seine Bestandteile zerlegt. Nicht aktiviert aber möglich und getestet ist die Option, dabei eine Statistik über die empfangenen Daten zu erstellen (welche PIDs sind wirklich im Strom [manche werden auch bewußt versteckt] und welche Raten hat welcher PID).

Ich bin zuversichtlich, dass damit die letzte große Hürde auf dem Weg zu DVB.NET / VCR.NET 3.0 gefallen ist. Mal sehen…

Jochen