Ich weiß, dass dies ein Thema ist, das viele Male diskutiert wurde und die Leute immer behaupten: Wix Bootstrapper sollte nicht erhöht ausgeführt werden müssen. Lassen Sie mich unsere Anforderungen erklären und hoffentlich kann jeder eine Lösung vorschlagen, die auf allen Systemen funktioniert.Wix Bootstrapper Manifest oder erhöhte benutzerdefinierte Aktion
Unsere installierte Software ist ein Windows-Dienst, der erhöht ausgeführt wird. Der Dienst verfügt über verschiedene Einstellungen, die in einer Datenbank gespeichert sind, auf die nur Administratoren zugreifen können. Das Installationsprogramm ermöglicht auch die Konfiguration dieser Einstellungen, die als Teil der erhöhten Phase des Installationsprogramms durchgeführt wird. Und hier ist das Problem: Wir können die aktuellen Einstellungen nicht aus der Datenbank innerhalb der ungeladenen Phase des Bootstrappers laden.
Die einfachste Lösung wäre es, den gesamten Bootrapper erhöht zu betreiben, aber es scheint, dass Wix intensiv versucht, erhöhte Bootstrapper vom Design her zu verhindern. Alle Diskussionen in diesem Bereich führen zu seltsamen Lösungen, bei denen externe Tools verwendet werden, um nach der Wix-Kompilierung ein Anwendungsmanifest einzubetten.
Ja, theoretisch könnten wir die gesamten Datenbankanmeldeinformationen überarbeiten, um dem Installierer Lesezugriff zu gewähren, aber ich möchte dies aus Sicherheitsgründen verhindern. Wir könnten auch eine Kopie der Einstellungen für das Installationsprogramm an einem lesbaren Ort (z. B. in der Registry) aufbewahren, aber dies ist auch nicht nett zu verwalten.
Gibt es einen sauberen Wix-eingebauten Mechanismus, um diese Einstellungen zu laden oder den Bootstrapper von Anfang an mithilfe eines Anwendungsmanifests zu erhöhen? Wir sind uns bewusst, dass erhöhte Bootstrapper für den Benutzer "nicht nett" sind, aber unsere Software richtet sich an Service-Betreiber, die sowieso Administratorrechte haben müssen, um unsere Software zu betreiben.
Update # 1: Wir haben bereits eine benutzerdefinierte WPF-GUI als Bootstrapper-Anwendung mit der Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperApplication
Klasse von Wix zur Verfügung gestellt.
Wenn ich Bootstrapper erhöht ausgeführt werden musste, habe ich es nur aus der Quelle mit mehreren Manifest-Dateien neu erstellt. Für Wix 3.10 erfordert das Erstellen von VS 2015 mit Windows XP-Unterstützung für C++ aktiviert. Ich kann diesen Weg beschreiben, wenn Sie wirklich folgen müssen. –
Was ich vielleicht vergessen habe zu erwähnen, ist, dass wir bereits unsere eigene UI mit 'Microsoft.Tools.WindowsInstallerXml.Bootstrapper: BootstrapperApplication' aufbauen; Ich bin mir nicht sicher, ob dies für dieses Thema einen Unterschied macht. Kann dieser benutzerdefinierte Bootstrapper-Build zu einem normalen Projekt gemacht werden, das Teil der Lösung ist, oder handelt es sich eher um einen vollständigen benutzerdefinierten Wix-Build, der mit Ihrem Ansatz erstellt wird? – Danielku15
macht es keinen Unterschied. Nach dem Wiederaufbau müssen Sie den ursprünglichen Brennvorgang ersetzen.exe im Ordner mit Wix-Binärdateien und danach werden alle Bootstapper-Anwendungen, die mit diesen Binärdateien erstellt werden, beim Start nach Anmeldeinformationen fragen. –