2009-05-29 7 views
3

Après l'installation de mon programme .NET, comment puis-je configurer le PATH du système pour qu'il inclue mon répertoire absolu du programme afin que l'utilisateur puisse lancer mon fichier .exe depuis n'importe quel répertoire de la console?Comment ajouter mon programme à PATH dans Windows .NET?

Remarque: Je souhaite que cela soit fait automatiquement sans que l'utilisateur final doive ajouter manuellement le PATH lui-même.

+1

Quel package d'installation utilisez-vous? Cela peut constituer un moyen de le faire. –

Répondre

4

Je suppose que vous utilisez le VS2008 installateur intégré et non InstallShield ou Wise ou quelque chose comme ça (qui ont tous deux de bien meilleurs moyens).

Vous pouvez créer une classe d'installation qui l'ajoute (voir ci-dessous).

Vous ajoutez ensuite votre classe d'installation en tant que custom action for install and uninstall et ajoutez custom actions data avec le chemin que vous voulez, par exemple pour ajouter le TARGETDIR au chemin ...

/VariableName = « Chemin » /Valeur = "[TARGETDIR] \"

using System; 
using System.ComponentModel; 

namespace Emv 
{ 
    [RunInstaller(true)] 
    public class Installer : System.Configuration.Install.Installer 
    { 
     public Installer() 
     { 

     } 

     public override void Install(System.Collections.IDictionary stateSaver) 
     { 
      base.Install(stateSaver); 

      try 
      { 
       var varName = this.Context.Parameters["VariableName"]; 
       var valToAdd = this.Context.Parameters["Value"]; 
       var newVal = String.Empty; 

       var curVal = Environment.GetEnvironmentVariable(varName); 

       if (curVal != null && curVal.Contains(valToAdd)) 
       { 
        return; 
       } 

       newVal = (curVal == String.Empty) ? valToAdd 
                 : curVal + ";" + valToAdd; 

       Environment.SetEnvironmentVariable(varName, newVal, 
         EnvironmentVariableTarget.Machine); 
      } 
      catch (Exception ex) 
      { 
       // message box to show error 
       this.Rollback(stateSaver); 
      } 
     } 
    } 
} 

Une référence à System.Configuration.Install est nécessaire pour ce code.

+0

vous avez exactement raison .. je suis en utilisant le programme d'installation intégré vs2008. peut-être que je devrais utiliser InstallShield. merci pour le code si .. je ne savais pas que je pourrais créer mon propre programme d'installation personnalisé. – sivabudh

2

La plupart des programmes d'installation vous permettent d'ajouter à la variable d'environnement de chemin d'accès système. Consultez la documentation pour cette fonctionnalité. Si vous installez manuellement, vous pouvez utiliser setx.exe (à partir du kit de ressources IIRC) pour modifier le chemin - mais attention, vous ne voulez pas remplacer le chemin existant par le répertoire de votre application, dit-il. avec l'expérience :)

Ou, mon préféré, utilisez WMI dans un script:

par exemple.

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 

Set objVariable = objWMIService.Get("Win32_Environment").SpawnInstance_ 

objVariable.Name = "Path" 
objVariable.UserName = "System" 
objVariable.VariableValue = "c:\myapp" 
objVariable.Put_ 
+0

Je viens d'essayer cela en C# .. mais n'a pas vu de différence ... ai-je raté quelque chose? ManagementClass clss = new ManagementClass ("Win32_Environment"); clss ["UserName"] = "Système"; clss ["Name"] = "Chemin"; clss ["VariableValue"] = "c: \\ myapp"; clss.Put(); – sivabudh

+0

Je n'ai aucune idée, je fais seulement mon script WMI dans les scripts .vbs que je cours en utilisant cscript.exe – gbjbaanb

3

Vous pouvez accéder et ajouter au chemin courant à cet endroit de Registre:

HLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path 

Ce changement est mieux fait dans votre installateur, pas dans votre application réelle.

Assurez-vous ajoutez à la valeur de registre, et ne se contentent pas mis ... il

+0

Si vous voulez PATH de l'utilisateur, il est dans 'HKEY_CURRENT_USER \ Environment \ PATH' – Pat

Questions connexes