Как запустить исполняемый файл в конце проекта установки?
-
09-06-2019 - |
Вопрос
У меня есть проект установки Visual Studio, который я использую для установки довольно простого приложения WinForms.В конце установки у меня есть настраиваемая страница пользовательского интерфейса, на которой отображается один флажок, который спрашивает пользователя, хотят ли они запустить приложение.Я видел, как другие установщики делали это довольно часто.Но я не могу найти способ заставить проект установки запустить исполняемый файл после завершения установки.Идеи?
ПРИМЕЧАНИЕ:Вы не можете использовать дополнительные действия, поскольку они используются как часть процесса установки. Я хочу запустить установленное приложение, как только пользователь нажмет кнопку «Закрыть» в конце установки.
Решение
Я считаю, что это одно из реальных ограничений проекта установки Visual Studio.Вам необходимо иметь возможность изменить последнюю страницу пользовательского интерфейса установки, но VS.NET не дает вам возможности сделать это.Вы можете изменить таблицы в .MSI после его сборки, но VS.NET, вероятно, будет перезаписывать эти изменения при каждой сборке.Вы можете переопределить последнюю страницу с помощью модуля слияния, который вы включаете в проект установки.В любом случае вам нужно будет ознакомиться с тем, как диалоги пользовательского интерфейса создаются в .MSI, и это нетривиально.
Возможно, вы захотите перейти на бесплатный установщик на основе сценариев или купить коммерческое приложение для разработки установки (только не покупайте InstallShield из любви к Питу).Посмотрите InstallAware (хотя я им не пользовался).
Другие советы
Вы также можете использовать специальные действия
Я только что нашел очень простой способ, не требующий внешних инструментов.Вам нужно только добавить файл класса в основной проект и настраиваемое действие в проект установки.
Я сделал это для внутренних приложений, создав пакет сценариев VB, который запускает исполняемый файл установки, ждет его закрытия, а затем запускает вторую программу.
Вы также можете добиться этого, немного доработав, используя несколько вызовов Win API в исполняемом файле C.
Вы можете использовать MSILAUNCH (хотя у меня он работает только с MSICREATE).
Мне удалось это сделать, вызвав метод Main сборки, используя следующую строку:
(typeof(ClassWithinAssemblyToExecute)).Assembly.EntryPoint.Invoke(null, new Object[] {} )
вы можете сделать это с помощью специального установщика.просто добавьте класс установщика, и вы увидите множество событий, например, после установки, перед установкой.просто подключитесь после установки и оттуда запустите свой exe по классу процесса.Я бы посоветовал вам Google найти больше о пользовательском установщике.вот одна хорошая ссылка, которая может вам помочь http://www.codeproject.com/Articles/19560/Launching-Your-Application-After-Install-using-Vis
Спасибо