Ich habe ein Windows Installer-Paket mit WiX 3.6 erstellt, das eine benutzerdefinierte verwaltete (C #) Aktion einbettet.
In diesem Stadium erfordert die Installation das
Es gibt keine Möglichkeit, die Anforderung # 1 zu umgehen, da die verwaltete Aktion nur dann bestimmte Schritte ausführen kann, wenn sie im Kontext des SharePoint-Installerkontos ausgeführt wird.
Ich möchte die Anforderung Nr. 2 entfernen und das Installationsprogramm ordnungsgemäß ausführen, auch wenn die Benutzerkontensteuerung aktiviert ist.
Ich habe das Problem ziemlich ausführlich untersucht, kann es aber immer noch nicht zum Laufen bringen. Ich habe InstallScope="perMachine" in meinem Paket festgelegt, was korrekt zur UAC-Erhöhung aufzufordern scheint, aber das Installationsprogramm schlägt immer noch mit dem berüchtigten 2869-Fehler fehl.
Das Hauptproblem besteht darin, dass meine benutzerdefinierte Aktion mit Impersonate="yes" konfiguriert ist, da sie im Kontext des aktuellen Benutzers und nicht des lokalen Administratorkontos ausgeführt werden muss. Wenn ich online suche, zeigen fast alle "Fixes" auf Impersonate="no" in der benutzerdefinierten Aktion, aber das ist keine Option für mich.
Meine Frage lautet daher: Gibt es eine Möglichkeit, eine benutzerdefinierte verwaltete Aktion mit der Identität des aktuellen Benutzers auszuführen, ohne dass die UAC vollständig deaktiviert werden muss?
Wo verweisen Sie auf die benutzerdefinierte Aktion?
Das Ausführen von .msi
mit erhöhten Rechten reicht möglicherweise nicht aus.
Um sicherzustellen, dass Ihre benutzerdefinierte Aktion mit erhöhten Rechten arbeitet, müssen Sie auch eine verzögerte benutzerdefinierte Aktion verwenden und sie in InstallExecuteSequence
referenzieren. Dies löst möglicherweise nicht Ihre Probleme, aber die unten verlinkten Artikel erläutern die UAC-Logiken während einer msi-Installation ausführlich.
Grundsätzlich enthält nicht alles, was das Installationsprogramm enthält, die Berechtigungen, und Sie müssen sicherstellen, dass die benutzerdefinierte Aktion ausgeführt wird, wenn das Installationsprogramm die erhöhten Berechtigungen verwendet.
Quelle: Ссылка
Ich hoffe, Sie finden diese Informationen nützlich. Ich könnte Ihnen bei der Freigabe Ihres benutzerdefinierten Aktionscodes behilflich sein.
Wenn Sie Impersonate="yes"
verwenden, wird Ihre benutzerdefinierte Aktion ohne Administratorrechte mit den Anmeldeinformationen des aktuell angemeldeten Benutzers ausgeführt.
Bei Impersonate="no"
wird Ihre benutzerdefinierte Aktion im Systemkontext ausgeführt. Wenn die benutzerdefinierte Aktion im Systemkontext ausgeführt wird, hat sie vollen Zugriff auf das System.
Von der Dokumentation WiX CustomAction
element , Impersonate
-Attribut :
Dieses Attribut gibt an, ob der Windows Installer, der als LocalSystem ausgeführt wird, beim Ausführen dieser benutzerdefinierten Aktion den Benutzerkontext des installierenden Benutzers annehmen soll. Normalerweise sollte der Wert 'yes', sein, es sei denn, die benutzerdefinierte Aktion benötigt erhöhte Berechtigungen zum Anwenden von Änderungen auf den Computer.