Пользовательский установщик VS2010 с собственными формами - PullRequest
0 голосов
/ 05 августа 2011

В настоящее время я использую пользовательские формы в сгенерированном установщике VS2010.Вот код

namespace MyWinFormApp
{
    [RunInstaller(true)]
    public partial class MyInstaller : System.Configuration.Install.Installer
    {
        public MyInstaller()
        {
            InitializeComponent();
        }

        public override void Install(System.Collections.IDictionary stateSaver) 
        { 
            base.Install(stateSaver); 
        }

        public override void Commit(IDictionary savedState)
        {
            base.Commit(savedState);

            InstallForm topmostForm = new InstallForm();  

            topmostForm.BringToFront(); 
            topmostForm.TopMost = true; 
            topmostForm.ShowDialog();
        }
    }
}

Это показывает мой InstallForm как всплывающее окно, в то время как мой мастер, созданный установщиком, все еще висит в фоновом режиме.Проблема здесь в том, что, хотя я пытался сделать его модальным.Он по-прежнему позволяет выполнять действия в мастере, созданном программой установки, при установке на моем компьютере с Windows 7.Это не совсем модально.

Любой способ сделать мой InstallForm модальным или заставить его отображаться как одно из созданных программой установки окон мастера, а не отдельно как всплывающее окно?

Использование другого создателя установки не вариант.Мне нужно использовать только Visual Studio.

1 Ответ

1 голос
/ 06 августа 2011

Единственный способ, которым я знаю, чтобы сделать форму модальной, - это заставить созданного установщиком окна мастера обладателем вашей формы. Но это не тривиальная задача. Еще одна сложность заключается в том, что мастер, созданный с помощью формы и установщика, работает в разных процессах.

Один из способов преодолеть это - скрыть окно мастера установки. Хотя я не уверен, что есть простой способ сделать это. В противном случае вы столкнетесь с той же проблемой, что и выше: вам нужно найти правильное установочное окно.

Лучшим подходом было бы не использовать формы, показанные в пользовательских действиях. Вы можете создавать собственные формы MSI и вставлять их в последовательность интерфейса мастера. И форма должна быть наивысшей; Я бы не рекомендовал использовать самые верхние окна в установщике.

...