Sto scavando intorno a Google cercando di trovare il modo appropriato per determinare il percorso di installazione selezionato da un utente dalla procedura guidata di installazione.Progetto di installazione di Visual Studio: Ottieni directory di destinazione
Fondamentalmente sto riscontrando un problema in cui il mio servizio non è in grado di creare file nella propria directory perché non dispone delle autorizzazioni appropriate. Sto assumendo che il modo corretto per risolvere questo è quello di assicurarsi che qualsiasi account che il servizio sta usando sia dotato di autorizzazioni appropriate per i file nella sua cartella.
Ma prima posso anche affrontare come impostare le autorizzazioni tramite .Net Ho bisogno di conoscere la cartella di installazione. Sto usando un progetto di installazione che ha una classe Installer che contiene anche un controllo ServiceInstaller
. Entrambi hanno la proprietà Context
, quindi l'ho verificato per i parametri disponibili quando l'evento AfterInstall si attiva per ciascuno dei rispettivi programmi di installazione. All'inizio pensavo di vedere il set di proprietà TargetDir
ma non è stato il caso. Tuttavia sto vedendo AssemblyPath
impostato e puntando all'eseguibile della cartella appropriata.
In sostanza voglio solo fare in modo che questo sia il metodo appropriato dovrei usare:
private void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e)
{
string InstallPath = System.IO.Path.GetDirectoryName(serviceInstaller1.Context.Parameters["AssemblyPath"]);;
}
È inoltre necessario aggiungere uno spazio aggiuntivo dopo il backslash "\". Altrimenti potresti ottenere un'eccezione FileNotFoundException durante l'installazione o la disinstallazione. Vedi [qui] (http://stackoverflow.com/questions/4516256/how-do-i-fix-setup-project-with-custom-action-file-not-found-exception/4522825#4522825) o [qui ] (http://stackoverflow.com/questions/8491095/error-1001-using-custom-installer-with-visual-studio-2008). –
Dove stai usando questo pezzetto di testo? La tua spiegazione non mi è chiara, mi dispiace. Come argomento della riga di comando per il progetto? Da qualche parte nel codice? Anche il collegamento a MSDN è interrotto. Grazie Microsoft! :-) –
Oh, ora capisco. Ho trovato la risposta in un altro post: "Nel progetto di distribuzione, aggiungere un'azione personalizzata per l'installazione e il commit. Per la proprietà CustomActionData per l'azione personalizzata Installa, immettere/Targetdir =" [TARGETDIR] \ "" –