Saturday 1 July 2017

Wix Custom Action Binary Optionen


Wix Tipps Tricks Wix ist mächtig, und ich würde nicht empfehlen, andere Installation Build-System für ernsthafte Projekte. Unendlich anpassbar, skriptfähig, verwendet Standard-MSI-Dateien, kostet nichts und vielleicht am besten von allen, integriert direkt mit Visual Studio. Beide Wix selbst und das MSI-System, das es gebaut hat, führt eine Reihe von Macken ein, und die Lernkurve ist hübsch, ziemlich steil. Und dann lernt man die richtige Einstellung: eine Datei pro Komponente, vorzugsweise von Hand hinzugefügt. Heres einige verschiedene Tipps nichts zu fortgeschritten, aber es lohnt sich zu wissen, dasselbe. Projektreferenzen Referenzen zu anderen Projekten in der Lösung sind vielleicht die wichtigste Sache über die Verwendung von Wix, und was macht es so toll zu bedienen. Hinzufügen einer Referenz ist einfach: Projekte, die Sie verweisen, werden mit dem Installer und in der gleichen Konfiguration (debugreleasewhatever) auch gebaut. Kümmert sich um die Bestellung von Bestellungen sofort. Und Referenzen haben auch Eigenschaften Sie können Wix einstellen, um Dateien, die zu einem Projekt gehören, automatisch mit Hilfe von HEAT zu ernten. Könnte nützlich sein, wenn Ihr Projekt enthält COM-Informationen HEAT ist in der Lage zu verarbeiten, obwohl Ive meist verwendet HEAT aus Pre-Build-Schritte, um Dinge wie ein Verzeichnis voller Dokumentationsdateien zu ernten. Havent hatte viel Glück mit HEAT auf selbstregistrierende native. exe Server, entweder. Wirklich schneidet auf hart-codierte Informationen und messing herum mit Pfaden relativ zu Ihrem Installateur. Installer Version Dateiversion, Version im Produktnamen Mit der speziellen Variable (bind. FileVersion.) Können Sie Ihr Installationsprogramm so einstellen, dass es die gleiche Version wie eine bestimmte Datei hat, auf die es verweist. Ich nehme auch an, die Version an den Produktnamen anzuhängen, also ist es klar, was installiert wird, und mit dem Produktnamen als Makro, das während des Installers wiederverwendet werden kann. Zur Klärung Ive definierte PRODUCT in Code hier, aber es ist besser, es in den Projektoptionen zu tun: Auf diese Weise ist das Makro global für alle Dateien im Projekt. Hinzufügen von Dateien als Links Im Gegensatz zu Visual C, wenn Sie eine vorhandene Datei zu einem Wix-Projekt hinzufügen, kopiert es es. Hinzufügen der Datei als Link ist extrem einfach, wenn Sie nicht die Gewohnheit haben, mit zusätzlichen Ok-Button-Optionen in Common Item Dialogen zu übersehen. das ist. ComponentGroups und Directories Eine lästige Sache über das Wix-Schema ist, dass man keine ComponentGroup in einem DirectoryRef-Element haben kann oder umgekehrt. Sowohl ComponentGroup - als auch DirectoryRef-Elemente sind für größere Projekte kritisch, wobei ein Feature Komponentengruppen teilen kann, die wiederum in verschiedenen Dateien definiert sind. Dies bedeutet, dass Sie dazu neigen, Code zu sehen, wie zB Hinweis, wie die ComponentGroup ein ComponentRef für jede Komponente mit anderen Worten enthalten muss, für jede hinzugefügte Komponente müssen Sie die Datei an zwei Stellen bearbeiten, was ärgerlich ist. Glücklicherweise, seit Version 3, unterstützt Wix ein Directory-Attribut für Komponenten: Viel neater. Der einzige Nachteil ist, dass das Verzeichnis für jede Komponente wiederholt werden muss. Aber in der Praxis finde ich nicht so viel von einem Problem. Theres immer die findreplace Funktion, nachdem alle. Das MajorUpgrade-Element Upgrades, Updates und Patches sind einer der komplexesten Teile von MSI Authoring. Ich neige dazu, nur Major Upgrades (die deinstallieren und dann neu installieren das Produkt), aus den folgenden Gründen: Sie benötigen die Produkt-ID GUID für jede Version geändert werden, die einfach in Wix ist, indem Sie es auf. Auch die Freigabe kleinerer Updates bedeutet, dass die Produkt-ID in einigen Fällen aktualisiert werden muss, aber nicht andere, was einen komplexeren Workflow bedeutet. Sie erlauben es, dass automatisch generierte GUIDs mit Komponenten verwendet werden, die es nicht nur zu einem Mühe machen, wxs-Dateien zu bauen, sondern auch, dass die HEAT-Ernte als Pre-Build-Schritt durchgeführt werden kann, der für jeden Build des Installateur Major Upgrades erlauben es, alle Featureskomponenten für den Installateur neu zu mischen, so dass es einfacher ist, den Installateur zu verbessern, wenn die Entwicklung weitergeht. Natürlich ist der Nachteil, dass Sie eine große MSI-Datei auch für einfache Updates verteilen müssen. Wix 3.5 hat das MajorUpgrade-Element eingeführt. Die einfacher zu bedienen ist als das Durcheinander mit separaten Upgrade - und Upgrade-Versionselementen. Heres, wie ich es benutze (beachten Sie, dass PRODUCT ein Makro ist, das in den Projektoptionen definiert ist): Achten Sie darauf, dass das Id-Attribut des Product-Elements noch gesetzt sein muss. Beachten Sie auch das Attribut AllowSameVersionUprades. MSI-Installateure ignorieren die vierte Ziffer der Produktversion. Standardmäßig werden MSI-Installateure, von denen nur die vierte Versionsstelle abweicht, nebeneinander installiert. Dies führt zu verwirrenden Situationen mit doppelten Einträgen in Addremove-Programmen usw. Durch das Setzen von AllowSameVersionUprades auf true, werden diese Versionen wie üblich übereinander installiert, mit dem Nebeneffekt, dass es möglich ist, auf Versionen mit einer niedrigeren vierten Ziffer zu stufen. Für die Versionierung von Systemen, bei denen die vierte Ziffer z. B. eine Zweignummer ist, könnte dies tatsächlich eine positive Sache sein. Beachten Sie, dass AllowSameVersionUpgradesyes eine ICE61-Warnung generiert. Um es zu deaktivieren, füge es zu den ignorierten ICE-Validierungen in den Wix-Projekteigenschaften hinzu (unter Tool-Einstellungen). Es ist schwer, jeden unaufhörlichen Installateur zu machen, ohne zumindest einige ICE-Warnungen zu ignorieren, vor allem, wenn Drittanbieter-Merge-Module beteiligt sind. Deaktivieren Sie Wix-Projekte in Debug-Builds Wix-Projekte können ziemlich lange dauern, um zu bauen, und arent immer wirklich benötigt. Ich schlage vor, sie zu entladen, oder ihre Lösung Ordner (rechts klicken-Unload Projects In Solution Folder), wenn sie arent benötigt. Sie können im Debug-Modus vollständig deaktiviert werden, indem Sie zum Lösungskonfigurationsdialog gehen und sie für DebugAll-Plattformen deaktivieren. Wix und Team Foundation Server Team Build Arbeiten mit TFS Team Build kann ein Schmerz sein, und bekommen es zu spielen nett mit Wix nahm einige Experimente, aber es ist nicht so schwer: Stellen Sie sicher, dass Wix-Projekte für die Konfiguration, die Sie verwenden möchten gebaut werden. Standardmäßig und ärgerlich werden Wix-Projekte nur für die Plattform Mixed Platforms gebaut, nicht für Win32. Vergewissern Sie sich, dass Ihre Build-Server Mixed Platforms verwenden oder die Wix-Projekte für Win32 aktivieren. Stellen Sie sicher, dass Wix auf Ihrem Build-System installiert ist. Ursprünglich wollte ich das nicht vermeiden und folgte den hier beschriebenen Schritten. Überprüfen Sie Wix in den Quellbaum. Dies kam mit einigen großen Nachteilen aber: jede bearbeiten. wixproj Datei und die Wix binariesTeam Build nicht spielen nett, wenn die Zeit kam zu bereinigen:. Registrieren Sie Microsoft. Deployment. WindowsInstaller. dll mit dem GAC, sonst wird Team Build nicht in der Lage sein, es irgendwie zu finden. Starten Sie eine VS2010-Eingabeaufforderung als Administrator: C: Programmdateien (x86) Windows Installer XML v3.5bingacutil - i Microsoft. Deployment. WindowsInstaller. dll Microsoft (R) Global Assembly Cache Utility. Version 4.0.30319.1 Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten. Assembly erfolgreich zum Cache hinzugefügt Ein Nachteil ist, dass das Wix-Projekt-Ausgabedatei-Verzeichnis ignoriert wird und dass Ihre Installateure unter allen anderen Binärdateien abgelegt werden. Kann mit einem Post-Build-Schritt gelöst werden, wenn Sie so geneigt sind. UAC-Schild auf Installations-Schaltfläche Standardmäßig fragen Wix-Installateure nach Administratorrechten, nachdem sie die Installations-Schaltfläche auf Systemen mit UAC aktiviert haben, aber nicht die UAC-Abschirmung auf der Schaltfläche anzeigen. Durch das Setzen des InstallScope-Attributs des Package-Elements auf perMachine. Der Schild kann gemacht werden, um zu erscheinen: Leider scheint es, dass durch keine Kombination von InstallScope andor InstallPrivilege-Einstellungen Installateure gemacht werden können, um nur um Administratorrechte zu bitten, wenn diese tatsächlich erforderlich sind, abhängig vom Installationsverzeichnis. Wie es jetzt steht, werden perUser-Installateure einfach nur fehlgeschlagen, wenn sie zum Beispiel im Programmdatei-Verzeichnis installiert sind, während perMachine-Installateure immer nach Administratorrechten fragen. TARGETDIR und die Systempartition Beim Versuch, in ein Unterverzeichnis des Systemlaufwerks zu installieren (zB C: application), könnte man davon ausgehen, dass in etwas wie TARGETDIR auf die Systempartition verweist, da ProgramFilesFolder immer als Kind von TARGETDIR gegeben wird . Dies ist nicht der Fall TARGETDIR ist die Partition mit dem meisten freien Speicherplatz. Es kann sogar eine Partition auf einer externen Festplatte sein. Um es auf die wahre Systempartition zu setzen, benutze den folgenden Ansatz: Das SetDirectory-Element wird benötigt, um WindowsVolume direkt zu verwenden, um MSIs zu signieren Wenn Sie Ihre MSI-Dateien signieren, erhalten Sie eine nette professionelle UAC-Eingabeaufforderung, die das Paket als Ihr verifiziert . Sobald du einen Code-Signierschlüssel im. pfx-Format bekommst, signierst ein MSI einfach zu tun, wie ein Wix-Projekt Post-Build-Schritt. Vergewissern Sie sich, eine Beschreibung für das Paket zu übergeben, da sonst die UAC-Eingabeaufforderung einige verstümmelte temporäre Dateinamen zeigt, wie msiexec funktioniert. Zum Beispiel: Debuggen von benutzerdefinierten Aktionen Eine einfache Möglichkeit, doppelte benutzerdefinierte Aktionen zu debuggen, besteht darin, dass sie ein Meldungsfeld mit dem MessageBox-Windows-Aufruf erstellen und dann einen Debugger anhängen. Stellen Sie sicher, dass die benutzerdefinierte Aktion in Debug-Modus gebaut wurde, wenn youre mit Projektreferenzen, um die benutzerdefinierte Aktion DLL enthalten, wird ein Debug-Build des Wix-Projekts auch eine Debug-Version der DLL enthalten. Haben Sie eine Meldungsbox in der Nähe, wo Sie debuggen möchten, und legen Sie die Visual Studio Debugger. Beachten Sie, dass beim Ausführen einer 32-Bit-benutzerdefinierten Aktion auf einer 64-Bit-Version von Windows eine neue msiexec-Instanz hervorgebracht wird, um die CA auszuführen, um die Show-Prozesse aus allen Benutzern anzuzeigen, um sie zu finden. Sobald der Debugger angeschlossen ist, platziere einen Breakpoint irgendwo, schläge F5, um fortzufahren, Klick ok auf dem Meldungsfeld und youre im Geschäft. Erstellt: Jan 18 2012 Geändert am 12. Februar 2012Creating a database Um eine SQL-Datenbank zu erstellen, benötigen wir zunächst einen Benutzer mit den richtigen Anmeldeinformationen. Der Benutzername und das Passwort werden in den Eigenschaften gespeichert, Sie können beliebige UI-Elemente oder benutzerdefinierte Aktionen verwenden, um sie einzustellen. Beachten Sie, dass dies das gleiche User-Tag war, das wir verwendet haben, um ein neues Benutzerkonto zu erstellen, aber es wurde in einem Component-Tag dann verwendet. Außerhalb jeder Komponente, wird es nicht den Benutzer erstellen, es wird nur definieren die Anmeldeinformationen für andere Operationen zu verwenden. Da die Tags sowie die SQL-Funktionalität in Erweiterungsmodulen vorhanden sind, müssen wir sie im Eröffnungs-Tag der Quelldatei erwähnen: Auch weil sie dem eigenen Namensraum angehören, müssen wir sie während des Gebrauchs dekorieren: Die Erstellung der Datenbank selbst geht wie üblich in eine Komponente. SqlDatabase bezieht sich auf die vorherige Benutzerdeklaration, gibt den Datenbanknamen, den Server und die Instanz an. Nicht spezifizieren Server wird es auf dem SQL Server auf dem Zielcomputer zu installieren. Andere Attribute geben an, wie in verschiedenen Situationen vorgehen soll. ConfirmOverwrite bestimmt, was zu tun ist, wenn die Datenbank bereits vorhanden ist und das CreateOnInstall. CreateOnUninstall. DropOnInstall Und DropOnUninstall-Attribute diktieren das erforderliche Verhalten bei der Installation und deinstallieren. Das verschachtelte SqlScript-Tag bestimmt, was mit der soeben erstellten leeren Datenbank zu tun ist. Wir können hier jedes gültige SQL-Skript ausführen, das sich in einer separaten Datei befindet. Das BinaryKey-Attribut liefert den Link zur. sql-Skriptdatei. Andere Attribute geben das Verhalten an, wenn ein Fehler auftritt (ContinueOnError) oder bestimmt, wann das Skript ausgeführt werden soll (ExecuteOnInstall. Führen SieOnUninstall RollbackOnInstall RollbackOnUninstall) aus. Mit mehr als einem Skript, das zur Ausführung vorhanden ist, können sie mit dem Sequenzattribut sequenziert werden. Alles, was bleibt, besteht darin, die. sql-Datei aufzunehmen: Die Datei, auf die sie sich bezieht, enthält übliche SQL-Befehle, um eine Datenbanktabelle zu erstellen: Beim Aufbau des Installationspakets müssen Sie sie mit den entsprechenden WiX-Modulen verknüpfen: Sie können die komplette SampleSQL herunterladen . Über FireGiant Jetzt können Sie mit Vertrauen installieren. FireGiant Arme Sie mit genauer Unterstützung von den Schöpfern der WiX. Weil es keine Fragen gibt, die wir nicht beantworten können oder Probleme, die wir nicht lösen können, können Sie die volle Funktionalität von WiX ohne Zweifel entfesseln. Copy 2016 FIREGIANTAdting eine benutzerdefinierte Aktion Dieses Beispiel zeigt, wie eine binäre benutzerdefinierte Aktion namens quotFooActionquot zu erstellen. Ein übliches Beispiel ist eine doppelte benutzerdefinierte Aktion, die notepad. exe oder eine andere Anwendung als Teil ihrer Installation startet. Bevor Sie beginnen, benötigen Sie eine Beispiel-DLL, die einen Einstiegspunkt namens quotFooEntryPointquot hat. In diesem Beispiel wird davon ausgegangen, dass Sie bereits das Thema "Skeleton Extension" erstellt haben. Schritt 1: Erstellen eines Fragments Sie können direkt auf die benutzerdefinierte Aktion in der gleichen Quelldatei wie die Produktdefinition verweisen. Allerdings wird das nicht die gleiche benutzerdefinierte Aktion an anderer Stelle verwendet werden. Also, anstatt die benutzerdefinierte Action-Definition in die gleiche Quelldatei zu setzen, können Sie eine kleine Modularität ausüben und eine neue Quelldatei erstellen, um die benutzerdefinierte Aktion namens quotca. wxsquot zu definieren. Okay, das ist es. Wurde mit der Bearbeitung der Quelldatei quotca. wxsquot gemacht. Das kleine bisschen Code sollte kompilieren, aber es wird nicht verknüpfen. Denken Sie daran, Linking erfordert, dass Sie einen Eintrag Abschnitt haben. Ein ltFragmentgt allein ist kein Eintrag. Gehen Sie zum nächsten Schritt, um die Quelldatei zu verknüpfen. Schritt 2: Hinzufügen der benutzerdefinierten Aktion Wir müssten diese Quelldatei zusammen mit einer Quelldatei verknüpfen, die ltProductgt oder ltModulegt enthielt, um erfolgreich abzuschließen. Diese drei Zeilen sind alles, was Sie brauchen, um Ihre Windows Installer-Paket-Quelldatei hinzufügen, um die quotFooActionquot CustomAction aufzurufen. Nun, da wir zwei Dateien haben, um unseren Anruf an light. exe miteinander zu verknüpfen, wird ein wenig komplizierter. Hier sind die Kompilierungs-, Link - und Installationsschritte. Jetzt als Teil Ihrer Installation, was auch immer quotFooActionquot ausführen soll, sollten Sie nach der Installation von InstallFiles passieren.

No comments:

Post a Comment