2010-10-04 5 views
1

Привет У меня есть следующий код с сайта мс, и я хочу, чтобы установить путь установки из с в коде (не спрашивайте, но поверьте мне, что нужно!)VS проект установки пользовательских действий с #

так как мне получить доступ и установить путь установки из пользовательского действия?

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 и установить в пути установки. В противном случае, как можно активировать пользовательские действия? Они выполняются после того, как они доступны для установочных API .NET (которые использует installUtil). Таким образом, вам действительно нужно установить какой-то путь, а затем переместить их потом. Теперь, вероятно, есть способ сделать это с помощью InstallShield или любого инструментария установки, с которым вы можете справиться, для его сценария, но с помощью пользовательских действий .NET у вас есть определенные ограничения. (Другой такое ограничение изменения файла конфигурации на основе входных параметров с помощью мастера установки, до установки фактически были извлечены файлы куда-нибудь.)

1

Вы можете сделать это,

Если вы хотите получить доступ к установке путь в вашем пользовательском классе установщика, ваш первый инстинкт - использовать [TARGETDIR] или [INSTALLDIR] в качестве настраиваемого действия. Увы, это не будет работать, это будет заселено после выполнения пользовательского действия Так как? string applicationInstalledPath = Context.Parameters ["AssemblyPath"] извлечет установленный каталог.

Смежные вопросы