Frage

Ich habe eine einfache alte Windows Forms-Anwendung mit einem WiX-Installer, und es ist für alle Benutzer auf den Program Files Ordner installiert, wie man erwarten würde. Die Anwendungs-Hosts Add-In mit dem System.AddIn Rahmen .

Da der System.AddIn Rahmen muss einige der Add-in-Pipeline-Ordner (AddIns, AddInSideAdapters, AddInViews, Contracts und HostSideAdapters) schreiben, weiß ich nicht den besten Ort, um die Add-In installieren. Ich kann nicht installieren, um Program Files weil der Benutzer keine Schreibberechtigung haben, und wenn ich auf den Application Data Ordner des Benutzers installieren dann die Add-Ins werden nicht für andere Benutzer installiert werden.

Ich stelle fest, dass es widersprüchliche Anforderungen hier (Benutzer können nicht verwirren mit anderen Benutzern Add-Ins, die Add-Ins für alle Benutzer installiert werden müssen und alle Benutzer müssen die Erlaubnis zu schreiben), aber was ist die beste praktische Route zu nehmen?

Es ist eine Schande, dass die Dateien die System.AddIn Framework können schreiben muss nicht separat in Application Data gespeichert werden, aber das scheint eine Beschränkung des Rahmens zu sein.

War es hilfreich?

Lösung

Ich weiß, diese Frage vor langer Zeit gefragt wurde, aber ...

Haben Sie Environment.SpecialFolder.CommonApplicationData versucht?

In Vista / Windows 7 ist dieser Ordner: %ProgramData%. Ich bin nicht 100% sicher, was es in Windows XP ist, aber es ist wahrscheinlich %ALLUSERSPROFILE%.

In jedem Fall ist dieser Ordner sollte die Berechtigung zum Lesen / Schreiben haben und sein, die für alle Benutzer gleich.

Vergessen Sie nicht, einen Unterordner für Ihr Unternehmen / Anwendungsnamen zu erstellen:

string companyName = "My Company";
string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
string path = Path.Combine(folderPath, companyName);

Andere Tipps

immer noch die Hoffnung für eine bessere Antwort, aber ich denke, den einzigen Weg, es zu tun ist, um die Pipeline zu Programmdateien und kopieren Sie auf Anwendungsdaten jedes Mal, wenn die Anwendung ausgeführt wird zu installieren. Sie würden dann System.AddIn Rahmenbedingungen für das Pipeline Kopie in Anwendungsdaten zeigen, so dass es nur zu dem Benutzerprofil zu schreiben versucht.

Uhh, man kann nicht beides haben „alle Benutzer“ und „keine Erhebung“. Ich weiß nicht genau wissen, was der System.AddIn Rahmen ist, aber wenn es beabsichtigt ist, von einem Benutzerprozess ausgeführt werden (auch bekannt als: kein Systemdienst wie Prozess), dann unter dem Benutzerprofil schreiben muß (ApplicationDataFolder ist ein großer Platz) . Das ist eine sehr grundlegende Regel, dass alle Anwendungen folgen müssen. Basierend auf meinem begrenzten Verständnis von Ihren Kommentaren, es klingt wie der System.AddIn Rahmen wird diese Regel zu brechen.

Aber ich bin wahrscheinlich nur etwas fehlt.

Sind erforderlich, Sie die WiX-Installer zu benutzen? Bereitstellen der App als Clickonce-Lösung werden alle der Pipeline in die Benutzer Anwendungsdaten Ordner. Auf diese Weise jeder Benutzer seine eigene Liste der Module halten können.

Dies wird auch um die beschreibbaren Ordner Einschränkung erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top