Требуется WIX Bootstrapper для перезагрузки после установки .NET Framework и пропуска запуска приложения - PullRequest
0 голосов
/ 12 декабря 2018

Благодаря ответу Андрея здесь:

Установите .NET Framework 4.7.2 (при необходимости) с установщиком WIX

Я проверяю, есть ли .NETFramework 4.7.2 установлен и установить его.У меня осталась одна небольшая проблема ... У моего основного приложения есть действие после установки, которое запускает приложение.Невозможно запустить приложение, пока не будет установлен 4.7.2 И система не будет перезагружена.Я мог бы просто удалить этот код действия после установки из моего установщика приложений, но было бы неплохо, если бы он запустил приложение, если 4.7.2 уже был установлен и нет причин для перезагрузки.

Как я могу "заглянуть" в мой проект Bootstrapper из установщика моих приложений и посмотреть, был ли только что установлен .NET Framework или нет?Затем я могу условно запустить действие после установки.Если 4.7.2 был только что установлен, я полагаю, что появится запрос на перезагрузку, которая идеально подходит.

Приветствуются предложения о других способах решения проблемы.Я полагаю, что другой способ справиться с ситуацией - принудительная перезагрузка после установки .NET и после перезагрузки установка моего приложения.Но я думаю, что было бы лучше установить все, а затем перезагрузиться.Я думаю, что это очень распространенная проблема, но я не нашел ничего, что могло бы с ней справиться.Возможно, это слишком простая проблема!Я новичок в WIX и не понимаю, как делиться переменными и информацией из одного проекта в другой.Особенно получение информации о загрузчике из основного установщика приложения.Дайте мне знать, если я смогу предоставить разъяснения или более подробную информацию.
Спасибо!

Действие после установки выглядит следующим образом:

<CustomAction Id="PostInstallAction"
      Return="check"
      Execute="immediate"
      BinaryKey="MyAppInstaller.CustomActions.CA.dll"
      DllEntry="PostInstallAction" />

    <InstallExecuteSequence>
      <Custom Action="PreInstallAction" Before="InstallValidate"  />
      <Custom Action="PostInstallAction" After="InstallFinalize"  />
    </InstallExecuteSequence>

// follow function abbreviated (no logging and try/catch).In file customactions.cs
public static ActionResult PostInstallAction(Session session)
        {                             
                if (!Process.GetProcessesByName(MyAppLauncherFileName).Any())
                    Process.Start(ConfigurationManager.AppSettings[MyAppLauncherExePath]);

                return ActionResult.Success;              
        }

СЛЕДОВАТЬ ЗА: Было бы неплохо, если бы перезагрузкачто требуется для установки 4.7.2, произошло автоматически, а не по запросу пользователя.Есть ли способ сделать это, или это жестко закодировано в 4.7.2.веб-установщик?

1 Ответ

0 голосов
/ 16 января 2019

Относительно проверки, установлен ли .NET 4.6.1 или выше, вы можете добавить это:

<PropertyRef Id="WIX_IS_NETFRAMEWORK_461_OR_LATER_INSTALLED" />
  <Condition Message="$(var.ProductName) requires .NET Framework 4.6.1 or 
higher.">
<![CDATA[Installed OR WIX_IS_NETFRAMEWORK_461_OR_LATER_INSTALLED]]>
</Condition>

Что касается перезагрузки, вы можете использовать свойство Supress из действия ForceReboot.Вы можете обратиться к следующим URL для этого:

http://wixtoolset.org/documentation/manual/v3/xsd/wix/forcereboot.html

https://docs.microsoft.com/en-us/windows/desktop/Msi/reboot

https://docs.microsoft.com/en-us/windows/desktop/Msi/forcereboot-action

...