Domanda

Ho una semplice vecchia applicazione Windows Form con un programma di installazione WiX ed è installata per tutti gli utenti nella cartella Programmi come ti aspetteresti. L'applicazione ospita componenti aggiuntivi utilizzando il System.AddIn framework .

Poiché il framework System.AddIn deve scrivere in alcune cartelle della pipeline del componente aggiuntivo ( AddIns , AddInSideAdapters , AddInViews , < code> Contracts e HostSideAdapters ) Non conosco il posto migliore in cui installare i componenti aggiuntivi. Non riesco a installare in Programmi perché l'utente non avrà l'autorizzazione di scrittura e se installo nella cartella Dati applicazioni dell'utente, i componenti aggiuntivi non verranno installati essere installato per altri utenti.

Mi rendo conto che qui ci sono requisiti contrastanti (gli utenti non possono scherzare con i componenti aggiuntivi di altri utenti, i componenti aggiuntivi devono essere installati per tutti gli utenti e tutti gli utenti hanno bisogno dell'autorizzazione per scrivere) ma qual è la migliore pratica percorso da prendere?

È un peccato che i file che il framework System.AddIn deve scrivere non possano essere archiviati separatamente in Dati applicazioni , ma ciò sembra essere una limitazione del framework.

È stato utile?

Soluzione

So che questa domanda è stata posta molto tempo fa, ma ...

Hai provato Environment.SpecialFolder.CommonApplicationData?

In Vista / Windows 7, questa cartella è: % ProgramData% . Non sono sicuro al 100% di cosa si tratti in Windows XP, ma probabilmente è % ALLUSERSPROFILE% .

In ogni caso, questa cartella dovrebbe avere l'autorizzazione a leggere / scrivere ed essere la stessa per tutti gli utenti.

Non dimenticare di creare una sottocartella per il nome della tua azienda / applicazione:

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

Altri suggerimenti

Spero ancora in una risposta migliore, ma penso che l'unico modo per farlo sia installare la pipeline su Program Files e copiarla su Application Data ogni volta che l'applicazione viene eseguita. Indica quindi il framework System.AddIn alla copia della pipeline in Dati applicazione in modo che tenti di scrivere solo nel profilo utente.

Uhh, non puoi avere entrambi " tutti gli utenti " e "nessuna elevazione". Non so esattamente cosa sia il framework System.AddIn ma se è progettato per essere eseguito da un processo utente (ovvero: non un servizio di sistema come processo), allora deve scrivere sotto il profilo utente (ApplicationDataFolder è un ottimo posto) . Questa è una regola fondamentale che tutte le applicazioni devono seguire. Sulla base della mia comprensione limitata dai tuoi commenti, sembra che il framework System.AddIn stia infrangendo tale regola.

Ma probabilmente mi manca qualcosa.

È necessario utilizzare il programma di installazione WiX? La distribuzione dell'app come soluzione clickonce inserirà tutta la pipeline nella cartella dei dati dell'applicazione degli utenti. In questo modo ogni utente può mantenere il proprio elenco di moduli.

Questo aggirerà anche la restrizione della cartella scrivibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top