2010-10-04 95 views
1

嗨 我从MS网站下面的代码,我想从代码中设置安装路径(不要问,但相信我,我需要!)VS安装项目自定义操作C#

所以如何从自定义操作访问和设置安装路径?

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); 
     } 
    } 

回答

1

不能这样做......因为自MSI安装文件并设置到安装路径后,自定义操作就会发生。否则,如何调用自定义操作?它们在可用于.NET安装API(installUtil使用)后执行。所以,你实际上必须安装到某个路径,然后再移动它们。现在,可能有一种方法可以通过InstallShield或您可能能够实现的任何安装工具集进行编写,但通过.NET自定义操作,您有一定的限制。 (另一种这样的限制是基于在安装向导中输入参数修改配置文件,在安装之前已经将文件实际提取到某个地方。)

1

你可以做到这一点,

如果您要访问的安装路径在您的自定义安装程序类中,您的第一本能是使用[TARGETDIR]或[INSTALLDIR]作为自定义操作。 唉,这不会工作,这将在自定义操作执行后填充 那么如何? string applicationInstalledPath = Context.Parameters [“AssemblyPath”]将获取已安装的目录。

相关问题