2010-10-04 4 views
1

Salut J'ai le code suivant à partir du ms site et je veux définir le chemin d'installation à partir avec dans le codeVS projet d'installation action personnalisée C#

(ne pas demander, mais croyez-moi je dois!) Si Comment puis-je accéder et définir le chemin d'installation à partir d'une action personnalisée?

public partial class Installer1 : System.Configuration.Install.Installer 
    { 
     public Installer1() 
     { 
      InitializeComponent(); 
      //need code to set the installation path 

     } 
     [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] 
     public override void Install(IDictionary stateSaver) 
     { 
      base.Install(stateSaver); 
     } 

     [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] 
     public override void Commit(IDictionary savedState) 
     { 
      base.Commit(savedState); 
      System.Diagnostics.Process.Start("http://www.microsoft.com"); 
     } 

     [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] 
     public override void Rollback(IDictionary savedState) 
     { 
      base.Rollback(savedState); 
     } 

     [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] 
     public override void Uninstall(IDictionary savedState) 
     { 
      base.Uninstall(savedState); 
     } 
    } 

Répondre

1

Vous ne pouvez pas le faire ... parce que les actions personnalisées se produisent après que les fichiers ont été installés à partir du MSI et mis dans le chemin d'installation. Sinon, comment les actions personnalisées peuvent-elles être invoquées? Ils sont exécutés après leur disponibilité pour les API d'installation .NET (que installUtil utilise). Donc, vous devrez installer sur un chemin, puis les déplacer ensuite. Maintenant, il y a probablement un moyen de le faire via InstallShield ou n'importe quel jeu d'outils d'installation que vous pourriez avoir en main, pour le script, mais à travers les actions personnalisées .NET, vous avez certaines limitations. (Une autre telle limitation modifie un fichier de configuration en fonction des paramètres d'entrée de l'assistant d'installation, avant que l'installation a effectivement extrait les fichiers quelque part.)

1

Vous pouvez faire cela,

Si vous souhaitez accéder à l'installation chemin d'accès dans votre classe d'installation personnalisée, votre premier instinct consiste à utiliser un [TARGETDIR] ou [INSTALLDIR] en tant qu'action personnalisée. Hélas, cela ne fonctionnera pas, ce sera rempli après l'exécution de l'action personnalisée Alors, comment? chaîne applicationInstalledPath = Context.Parameters ["AssemblyPath"] va chercher le répertoire installé.

Questions connexes