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

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

Установите.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 ответ

Относительно проверки, установлен ли.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

Другие вопросы по тегам