запустить exe после установки msi, я вижу флажок запуска, но приложение не запускается - PullRequest
2 голосов
/ 20 января 2012

Я использую сценарий из этого ответа https://stackoverflow.com/a/1681410/22, чтобы вставить флажок запуска приложения в конце установщика MSI.

Все идет нормально, и я получаю флажок запуска очень хорошо, однакоприложение не запускается после завершения установки.

Не уверен, что это причина, но мое приложение требует администратора (app.manifest)

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

Вывод сборки установщика:

------ Starting pre-build validation for project 'MyAppInstaller' ------ 
------ Pre-build validation for project 'MyAppInstaller' completed ------
------ Build started: Project: MyAppInstaller, Configuration: Release ------
Building file 'C:\path\to\MyAppInstaller.msi'...
Packaging file 'MyApp.exe'...
Packaging file 'Icon.ico'...
Starting post-build events...
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

Updating the Control table...
Updating the ControlEvent table...
Updating the CustomAction table...
Updating the Property table...

Done Adding Additional Store

Successfully signed: MyAppInstaller.msi

Редактировать:

Если щелкнуть правой кнопкой мыши проект установки в Visual Studio и выбрать «Установить».Приложение запускается при закрытии установщика.

Однако, если я просто дважды щелкну по сгенерированному MSI.Приложение не откроется после закрытия MSI.

Я также пытался изменить настраиваемое действие на это, но все равно получаю те же результаты:

sql = "INSERT INTO `CustomAction` (`Action`, `Type`, `Source`, `Target`) VALUES ('VSDCA_Launch', '226', 'TARGETDIR', '[TARGETDIR]\\MyApp.exe')";

Обновление:

В итоге я использовал слегка измененную версию ответа "DJ KRAZE".В моем методе Main я проверяю аргумент frominstaller, а затем просто запускаю приложение в новом процессе и завершаю работу.Что позволяет установщику продолжить работу в обычном режиме.Затем я добавляю exe в настраиваемое действие «Установить» с аргументом «/ frominstaller».

if (frominstaller)
{
    Process p = new Process();
    p.StartInfo.FileName = System.Reflection.Assembly.GetExecutingAssembly().Location;
    p.Start();
    Application.Exit();
}

1 Ответ

2 голосов
/ 20 января 2012

Пробовали ли вы эти шаги, перечисленные в сообщении по ссылке, на которую вы ссылались ..?

Чтобы запустить любое приложение после завершения установки, щелкните правой кнопкой мыши по проекту установки, выберите «Пользовательские действия»,Затем щелкните правой кнопкой мыши на Commit, Add Custom Action и выберите файл, который вы хотите запустить.Обратите внимание, что он уже должен находиться в папке вашего приложения, что не должно быть проблемой в вашем случае, так как вы все равно запускаете свою программу.Просто выберите выходные данные вашего проекта.

Затем нажмите на этот добавленный .exe и измените InstallerClass на false.Это крайне важно, так как в противном случае она будет искать программу установки.

Вы даже можете передать параметры в ваш .exe, добавив их в свойство Arguments

...