Anpassungen für unterschiedliche Kunden

Fragen zum AKInstallerMSI
Soernt
Beiträge: 28
Registriert: 22.03.2011, 08:01

Anpassungen für unterschiedliche Kunden

Beitrag von Soernt »

Moin,

Ich habe zwei offene Punkte auf meinem Zettel:

1. "Branding"
ich habe ein Produkt das meine Kunden in Ihren Namen ausliefern. Die Kunden erwarten das deren Name in den Einstellungen im Abschnitt "Produkt" auftaucht. Das betrifft folgende Einstellungsmöglichkeiten:

* Produktname,
* Hersteller/Firma
* Autor der Installation
Angaben die im Abschnitt "Systemsteuerung/Software" hinterlegt sind:
* Produkt-URL
* Produkt Update-URL
* Support URL
* Support-Kontakt
* Support Telefon.

Wirklich gut wäre eine Möglichkeit diese Angaben in eine xml/ini Konfigurationssatei zu hinterlegen und AKInstaller anzuweisen die entsprechenden Daten auszulesen.
Gefunden habe ich einige Einstellungsmöglichkeiten in "Ausgabe". Diese sind nicht ausreichend für meinen Fall.

2. 32/64Bit Installation.
Grundsätzlich sind meine Assemblies mit "Any CPU" Einstellungen übersetzt. Ich habe mir das Mixed-Mode Feature angesen - es scheint prinzipiell genau das zu sein was ich brauche.
Nur darf die Installation keinen Bootstraper (.exe Dateien) verwenden es müssen reihne MSI Dateien sein.

Falls das Mixed-Mode Feature die Anforderung nicht leisten kann, ist es möglich mit einer Projektdatei sowohl 32Bit als auch 64Bit MSI's zu erstellen?
Ich möchte vermeiden, das ich zwei Projekte flegen muss - das geht über kurz oder lang schief.

Gruß
Sörnt Poppe
Andreas Kapust
Administrator
Beiträge: 1083
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Anpssungen für unterschiedliche Kunden

Beitrag von Andreas Kapust »

Guten Tag!

1: Hm, da müssen wir uns was überlegen.

2: Wählen Sie unter Ausgabe -> Cabinet: Mehrere Medien, dann bekommen Sie Zugriff auf die MSIs und Cab-Dateien. Nur sind es dann mehrere Dateien und nicht mehr eine.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
Andreas Kapust
Administrator
Beiträge: 1083
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Anpssungen für unterschiedliche Kunden

Beitrag von Andreas Kapust »

Guten Tag!

Zu 1: Mit der Vorabversion 2.8.601 steht dies zur Verfügung.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
Soernt
Beiträge: 28
Registriert: 22.03.2011, 08:01

Re: Anpssungen für unterschiedliche Kunden

Beitrag von Soernt »

Moin Herr Kapust,

vielen Dank für die Erweiterung!

Mir ist noch nicht klar, wie ich dem AKInstaller die XML-Datei mitteile - Kommandozeilen-Parameter?
Der Wert des Attributs "Name" im Element "Build" muss mit einem Namen im Abschnitt "Ausgabe" korrespondieren - richtig?

Weitere Fragen/Anmerkungen:
Ich habe das Feature "Benutzerdef. Aktionen" im Zusammenspiel mit ".Net Installer-Class" angeschaut.
Ich versuche zwei Parameter an die Installer-Class weiterzugeben.
1. InstallationFolder=[INSTALLDIR]
2. RegistrationXMLFilename=[FL_3_Registration_xml]

Bei der Ausführung gibt es eine Fehlermeldung. Im Log habe ich gesehen, das der Wert für [INSTALLDIR] korrekt ersetzt wird. Der Wert enhält aber Leerzeichen und wird nicht mit Anführungszeichen umschlossen. Der Parameter-Editor erlaubt mir nicht "[INSTALLDIR]" einzugeben.
für den 2. Parameter wird gar kein Wert übergeben. Ist meine Vorgehensweise hier falsch? Wie kann ich solche Werte übergeben?

Ich hatte erwartet, das die Installer-Class in einer Class-Library (.dll) vorliegen muss. Bei der Einrichtung der der Custom-Action ließ die Dateiauswahl aber nur ".exe" Datein zu. Ein Hinweis in der Dokumentation welchen Assembly-Arten unterstützt werden, wäre hilfreich.
Ich wolte mir eine Bibliothek mit Erweitrungen in Form von mehreren Installer-Classen innerhalb der gleichen Assembly anlegen. Wie gebe ich der Custom-Action den ensprechenden Klassennamen mit?

Grüße
Sörnt Poppe
Andreas Kapust
Administrator
Beiträge: 1083
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Anpassungen für unterschiedliche Kunden

Beitrag von Andreas Kapust »

Guten Tag!

Die XML-Datei wird auf der Seite Ausgabe angegeben.
Richtig Name ist der Name des Builds (die Anleitung wird diesbezüglich ergänzt).
Parameter1 : Korrekt, hier müssen Anführungszeichen erlaubt sein.
Parameter2: Wenn der Pfad übergeben werden soll, muss es [#FL_3_Registration_xml] sein, nicht [FL_3_Registration_xml] (auch wieder in Anführungszeichen).

Für die Installer-Class werden Exe erwartet (siehe Anleitung).

Um mehrere Klassen anzugeben, muss über den Aufruf eine Weiche eingebaut werden.
Z. B. /Class=1 Anhand der zur jeweiligen Klasse gesprungen wird.

Mit der Vorabversion 2.8.602 werden Anführungszeichen möglich sein.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
Soernt
Beiträge: 28
Registriert: 22.03.2011, 08:01

Re: Anpassungen für unterschiedliche Kunden

Beitrag von Soernt »

Moin Herr Kapust,

danke für die schnelle Antwort.

Ich komme mit der Custom-Aktion und der .Net-Installer Klasse nicht weiter.

Die Installer Klasse ist mit "Any CPU" und dem .Net Framework 3.5 übersetzt. Der Projekttyp ist "Konsolen-Anwendung".
Die Klasse ist erstmal ohne Funktion:

using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;

namespace CustomNetInstallerClassTest
{
[RunInstaller(true)]
public class MyInstaller : Installer
{

static void Main(string[] args)
{
}

public MyInstaller(): base()
{

}

public override void Install(IDictionary savedState)
{
base.Install(savedState);
}

public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
}

public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
}

public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
}
}
}

Das Assembly "CustomNetInstallerClassTest.exe" ist im Projekt aufgnommen. Die Custom Action ist mit dem Assistenten angelegt , es werden keine eigenen Parameter übergeben.
/NETVersion=2.0.50727 /installtype=notransaction /action=Install "[#FL_4_CustomNetInstallerClassTest_exe]" "[TempFolder]NetIUConf.xml"

Bei der Installation kommt es zu einer Fehlermeldung mit dem Code "2869" (The dialog [2] has the error style bit set, but is not an error dialog.).

Im Log habe ich folgendes gefunden:
MSI (s) (30:14) [13:52:50:559]: Note: 1: 2769 2: E31_CustomAction64Install 3: 1
DEBUG: Error 2769: Custom Action E31_CustomAction64Install did not close 1 MSIHANDLEs.
Bei der Installation dieses Pakets ist ein unerwarteter Fehler aufgetreten. Es liegt eventuell ein das Paket betreffendes Problem vor. Der Fehlercode ist 2769. Argumente: E31_CustomAction64Install, 1,
CustomAction E31_CustomAction64Install returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
MSI (s) (30:14) [13:52:50:559]: Closing MSIHANDLE (12) of type 790536 for thread 5812

Entferne ich die Custom-Action funktioniert die Installation.

Unter "Produkt"->"Einstellungen" ist der Pakettyp mit "32Bit" angegeben. Ich hätte erwartet, die CustomAction für die 32Bit ausgeführt wird.


Mit freundlichen Grüßen
Sörnt Poppe
Dateianhänge
MSI3b5e7.zip
Log-DAtei
(39.94 KiB) 814-mal heruntergeladen
Andreas Kapust
Administrator
Beiträge: 1083
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Anpassungen für unterschiedliche Kunden

Beitrag von Andreas Kapust »

Guten Tag!
Um die übergebenen Parameter zu sehen, ändern Sie das Assembly mal in:

Code: Alles auswählen

		
public override void Install(IDictionary savedState)
{
	base.Install(savedState);
	MessageBox.Show("DoNET Install");

	foreach(string strKey in Context.Parameters.Keys)
		{
		MessageBox.Show(strKey + " = " + Context.Parameters[strKey]);
		}
}
Code "2869" (The dialog [2] has the
Da scheinen Sie was im Dialog-Editor geändert zu haben.
Edit: Siehe Post unten.

2769 kommt davon dass der 32-Prozess eine 64 Bit-Dll (E31_CustomAction64Install ) ausführen möchte, was natürlich fehlschlägt.

Ist die Plattform beim Ausführen der CA wichtig, muss die CA doppelt (für 32 + 64 Bit) angegeben werden, wobei Sie als Bedingung VersionNT64 und Not VersionNT64 verwenden sollten.
Unter "Produkt"->"Einstellungen" ist der Pakettyp mit "32Bit" angegeben. Ich hätte erwartet, die CustomAction für die 32Bit ausgeführt wird.
Wenn Sie im Assistenten 64 Bit wählen, wird auch 64 Bit genommen ;-)

Mit der nächsten Version, gibt es ein Demo-Projekt (in ..\Tools\Demos).
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
Soernt
Beiträge: 28
Registriert: 22.03.2011, 08:01

Re: Anpassungen für unterschiedliche Kunden

Beitrag von Soernt »

Hallo Herr Kapust,

ich bin mir fast sicher, das ich nichts im Dialog-Editor umgestellt habe. Ich werde gleich ein neues Projekt erstellen um das sicherzustellen.

Die Plattform ist wichtig und ich habe die Option "32 + 64 Bit" ausgewählt, der Assistent hat 4 Custom-Actions angelegt und die Startbedinungen korrekt gesetzt.

Jetzt verstehe ich die Einstellung "Produkt->Einstellungen-> Pakettyp: 32Bit" nicht. Ich hätte erwartet das die entsprechende 32Bit Custom Action auf meinem 64Bit OS ausgeführt wird, wenn der Pakettyp auf 32Bit eingestellt ist.

Ich habe jetzt den Pakettyp auf 64Bit umgestellt und das Setup mit dem gleichen Ergebnis ausgeführt.

Die Projektdatei habe ich angehängt, wäre nett, wenn sie einen Blick drauf werfen und mir sagen was dort schief läuft.

Mit freundlichen Grüßen
Sörnt Poppe
Dateianhänge
NetInstallerTest.zip
(114.64 KiB) 810-mal heruntergeladen
Andreas Kapust
Administrator
Beiträge: 1083
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Anpassungen für unterschiedliche Kunden

Beitrag von Andreas Kapust »

Guten Tag!

Ihr Demo-Projekt lässt sich ausführen. :)
Zurzeit gibt es noch zwei Problemquellen.

Wird ein Ordner-Pfad z. B. "[INSTALLDIR]" angegeben, kommt es zu einem Fehler, da die Systemfunktion CommandLineToArgvW() das Ende des Pfades "..Programme\" fehlinterpretiert und \" als Escape-Zeichen für " sieht.

Das gleiche Problem hat die .NET-InstallerClass-Funktion, welche dann den Fehler 2869 meldet(?!) (weiteres dazu ab V.2.8.602 in der Anleitung).

Der Fehler lässt sich leicht umgeben. In dem Bei Ordnerpfaden z. B. "[INSTALLDIR] " statt "[INSTALLDIR]" angegeben wird. Also einem Leerzeichen zwischen ] und ".

Bei der Deinstallation wird das Assembly natürlich nicht mehr gefunden, wenn es Installiert wurde und sich nicht in den Ressourcen befindet.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
Soernt
Beiträge: 28
Registriert: 22.03.2011, 08:01

Re: Anpassungen für unterschiedliche Kunden

Beitrag von Soernt »

Hallo Herr Kapust,

hmm, hört sich an also ob irgendwas am meinem System verkonfiguriert ist - Vielen Dank für Ihre Mühen.

Wie lege ich fest, das die Assembly mit der .Net-Installer-Klasse als Resource behandelt wird um die zweite Problemquelle zu umgehen?

Also: Wenn der PaketTyp auf 32Bit festgelegt ist, wird dann die Custom-Action für 32Bit ausgeführt oder ist das abhängig vom OS? Wenn es abhängig vom OS ist, dann ist die Startbedingung etwas irreführend.

Ich möchte nochmal auf das Mixed-Mode Feature zurück kommen - da bin ich noch nicht da wo ich sein wollte.

Die Aufspaltung hat funktioniert und wie Sie richtig schrieben, habe ich nun zwei MSI und eine CAB Datei. Ich brauche aber zwei MSI Dateien die jeweils die CAB Datei enthält oder eine MSI-Datei die für beide Plattformen funktioniert. Mein Ziel ist eine Projekt-Datei zu haben, die entsprechend die 32/64Bit MSI Version erstellt. Kein gute Lösung sind zwei Projektdateien.

Welche Optionen habe ich?

Mit freundlichen Grüßen
Sörnt Poppe
Andreas Kapust
Administrator
Beiträge: 1083
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Anpassungen für unterschiedliche Kunden

Beitrag von Andreas Kapust »

Guten Abend!
Wie lege ich fest, das die Assembly mit der .Net-Installer-Klasse als Resource behandelt wird um die zweite Problemquelle zu umgehen?
Ab V.2.8.602 wird ein Demoprojekt beigelegt, welches dies per Temporäre-Dateien bewerkstelligt.
Also bitte 2.8.602 abwarten.
Also: Wenn der PaketTyp auf 32Bit festgelegt ist, wird dann die Custom-Action für 32Bit ausgeführt oder ist das abhängig vom OS? Wenn es abhängig vom OS ist, dann ist die Startbedingung etwas irreführend.
Die CustomActions haben nichts mit dem Pakettyp zu tun!
Die Aufspaltung hat funktioniert ... zwei Projektdateien.
Dafür ist der Boostrapper gedacht, der macht eine Datei daraus.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
Soernt
Beiträge: 28
Registriert: 22.03.2011, 08:01

Re: Anpassungen für unterschiedliche Kunden

Beitrag von Soernt »

Hallo Herr Kapust,

vielen Dank für die 2.8.602 Version.

Ich habe das .Net Installer Demo Projekt ausprobiert, leider mit Fehlermeldungen: Erst ein Fehlermeldung mit dem Code 2869 dann eine weitere mit dem Code 1721.

Das habe ich auch auf einem zweiten PC ausprobiert, mit dem selben Ergebnis. Verstehe ich nicht was hier schief läuft.
Auf beide Maschinen ist Windows 7 in 64Bit Variante installiert.

Mit freundlichen Grüßen
Sörnt Poppe
Andreas Kapust
Administrator
Beiträge: 1083
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Anpassungen für unterschiedliche Kunden

Beitrag von Andreas Kapust »

Guten Tag!

Bitte installieren Sie die aktuelle Version 2.8.610. In der Anleitung finden Sie eine Erklärung, wie es zu den besagten Fehlern kommen kann.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
Soernt
Beiträge: 28
Registriert: 22.03.2011, 08:01

Re: Anpassungen für unterschiedliche Kunden

Beitrag von Soernt »

Hallo Herr Kapust,

Ich habe die 2.8.602 mit der 2.8.610 aktualisiert. Das Problem mit dem Demo-Projekt bleibt bestehen.
Kann ich irgendwie festellen woran das liegt?

Mit freundlichen Grüßen
Sörnt Poppe
Andreas Kapust
Administrator
Beiträge: 1083
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Anpassungen für unterschiedliche Kunden

Beitrag von Andreas Kapust »

Guten Tag!

Bitte mal die Projektdatei mailen.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
Antworten