VS Setup проекта настраиваемое действие c # - PullRequest
1 голос
/ 05 октября 2010

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

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

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

Ответы [ 2 ]

1 голос
/ 21 октября 2010

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

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

1 голос
/ 05 октября 2010

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

...