2010-10-12 1 views
8

Mi piacerebbe sapere dove si trova il percorso di installazione di un'applicazione. So che di solito è in ... \ Programmi ... ma credo che alcune persone lo installino in luoghi diversi. Conosco il nome dell'applicazione.Come posso ottenere a livello di programmazione un percorso di installazione di un'altra applicazione?

Grazie.

+0

possibile duplicato del [Determinare 3rd Party Application directory di installazione] (http://stackoverflow.com/questions/1309142/determine-3rd-party-application-installation-directory) –

risposta

12

Il modo ideale per trovare il percorso di installazione di un programma (su Windows) è leggerlo dal registro. La maggior parte degli installer creerà una chiave di registro per quel programma che contiene il percorso di installazione. Esattamente dove si trova questa chiave e quale sarà denominata varia a seconda del programma in questione.

Per trovare se il programma ha una chiave nel registro, apri "regedit" e utilizza l'opzione Modifica> Trova per cercare e individuare una chiave con il nome del programma. Se esiste una chiave di questo tipo, è possibile leggerla utilizzando la classe RegistryKey nella libreria .NET Framework.

Se il programma non ha una chiave di registro, un'altra opzione è solo per chiedere all'utente di individuare il file .exe con OpenFileDialog, anche se ovviamente non è l'ideale.

10

Molti (la maggior parte?) Programmi creano una chiave di registro App Paths. Date un'occhiata a

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths 
4

Se si conosce l'applicazione in questione (rispetto a qualsiasi applicazione) chiave di registro è l'probabilmente l'opzione migliore (se ne esiste uno).

L'installazione potrebbe mettere nel proprio personalizzato "installa chiave percorso" da qualche parte (in modo da fare una ricerca come detto Fara) o potrebbe essere nella sezione di disinstallazione per i programmi installati, così da poter controllare:

  • HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall

Ma essere consapevoli del fatto che ogni nuova versione di un installazione potrebbe cambiare la chiave si scrive, sia per una chiave personalizzata o per la voce di disinstallazione. Quindi il controllo del registro dovrebbe probabilmente essere solo per una versione \ versione conosciuta.

tep

0

È possibile utilizzare MSI (ho scritto un C# wrapper per qui https://github.com/alialavia/MSINet). Ecco un semplice esempio:

var location = ""; 
foreach (var p in InstalledProduct.Enumerate()) 
{ 
    try 
    { 
     if (p.InstalledProductName.Contains("AppName"))      
     { 
      location = p.InstallLocation; 
      break; 
     } 
    } 
    catch { } 
}