Frage Wie installiere ich mit erhöhten Berechtigungen mithilfe eines WiX-Installationsprogramms?


Wir haben derzeit ein MSI, mit dem erstellt wird WiX 3.5. Die Anwendung ist in .NET 3.5. Wir erzeugen einen Bootstrapper, indem wir die Aufgabe boonstrapper in einem verwenden MSBuild Datei. Es zeigt auf die 0a SDK Dateien.

Wenn Benutzer haben UAC auf und sie installieren, müssen sie mit der rechten Maustaste auf die setup.exe und wählen Sie Ausführen als Administrator.

Was ich wirklich möchte, ist, dass die setup.exe automatisch zur Erhöhung auffordert (mit diesem gelben Dialog, den ich in anderen Installationen sehe).

Besser noch, ich möchte, dass das MSI das macht und die setup.exe komplett, aber ich denke, darum geht es bei WiX 3.6, oder?

Wenn ich den Bootrapper mit verwende ApplicationRequiresElevation="true" Das erfordert das 7.0a SDK, richtig? Wird der Bootstrapper dann aufgefordert, automatisch zu erhöhen? Bedeutet dies, dass die Anwendung eine sein muss .NETZ 4 Anwendung? Ich würde nicht denken ...


11
2018-01-04 02:30


Ursprung


Antworten:


Wir haben WiX 3.0 verwendet und konnten Privilegien erhöhen. Allerdings haben wir unseren Bootstrapper nicht erhöht. Wir haben die MSI-Datei selbst über die Eigenschaft Package erhöht:

<Package Id="$(var.PackageCode)"
         Description="$(var.ProductName) $(var.Version)"
         InstallerVersion="301"
         Compressed="yes"
         InstallPrivileges="elevated"  <!-- Elevated right here -->
         InstallScope="perMachine"
         Platform="x86"/>

Als kleine Randnotiz ist unser Bootstrapper signiert (mit signtool.exe vom v6.0A SDK) mit unserem offiziellen Zertifikat. Ich bin mir nicht sicher, ob dies dazu führt, dass der Bootstrapper auch erhöhte Rechte benötigt.

AKTUALISIEREN:

Wir haben eine app.manifest-Datei in unserem setup.exe-Bootstrapper-Projekt, das erfordert, dass die ausführbare Datei auf Administratorebene ausgeführt wird. Siehe das folgende Beispiel:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"
                xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
                xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- UAC Manifest Options
            If you want to change the Windows User Account Control level replace
            the requestedExecutionLevel node with one of the following.

        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

            If you want to utilize File and Registry Virtualization for backward
            compatibility then delete the requestedExecutionLevel node.
        -->
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</asmv1:assembly>

13
2018-01-04 02:53



Ich weiß, dass dies ein altes Thema ist, aber es könnte etwas Zeit für die nächste Zeit sparen.
Ich musste vor allem alle Kommentare lesen custom action had Impersonate=yes...

Auf der anderen Seite haben benutzerdefinierte Aktionen das Execute-Attribut in Bezug auf Berechtigungen:

<CustomAction Id = "CA.First"  Execute ="immediate" ... />
<CustomAction Id = "CA.Second" Execute ="deferred"  ... />

CA.First wird immer im Benutzermodus ausgeführt, aber CA.Second kann erhöhte Privilegien haben.

Könnten hier sein, sind andere Tricks im Zusammenhang mit Privilegien,
Hauptpunkt hier - WiX erlauben Steuerberechtigungen auf CustomAction-Ebene, so stellen Sie sicher, dass Sie es richtig einstellen.

Benutzeraktionselement


0
2017-09-21 12:54