2010-10-04 62 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」]將獲取已安裝的目錄。

相關問題