Резюме :По същество долното гласи:
1)
Деактивирайте персонализираното действие за стартиране на SQL Serversetup.exe
във вашия текущ MSI.2)
Създайте основенWiX Burn Bundle
за да стартирате SQLServersetup.exe
първо и след това стартирайте генерирания от проект Visual StudioInstallerMSI
след това. Или още по-добре, направете целия MSI и в WiX. Търговски инструменти като Advanced Installer и Installshield са жизнеспособни опции – имат вградена поддръжка за това (функциите варират в зависимост от версията на предпоставката).
Burn Bundle-Mockup (вдъхновение, още вдъхновение):
Само за да се опитам да покажа как работи маркирането на WiX Burn:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="MyCoolTestApp" Version="1.0.0.0"
Manufacturer="Someone" UpgradeCode="PUT-GUID-HERE">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<util:FileSearch Path="[WindowsFolder]System32\ucrtbase.dll" Variable="VCDISTINSTALLED"/>
<Chain>
<ExePackage SourceFile="vc_redist.x64.exe"
DetectCondition="VCDISTINSTALLED"
InstallCommand="/q /ACTION=Install"
RepairCommand="/q ACTION=Repair /hideconsole" />
<MsiPackage SourceFile="ShortcutDesktop.msi" />
</Chain>
</Bundle>
</Wix>
Техническа причина :Не съм експерт по проекти на Visual Studio Installer - трябва да се каже - всеки път. Тези проекти обаче имат редица ограничения и странности, както сте открили. Една от странностите е, че всички персонализирани действия се изпълняват в отложен режим и в системен контекст (работи като LocalSystem), без да се представят за стартиращия потребител. Вероятно това е причината за наблюдавания проблем - както вие заявявате.
Въпреки че е възможно да се обработи MSI, който получавате от проектите на VS Installer, по-добре е да се премахне използването на персонализирано действие за стартиране на инсталацията на SQL Server. Повече подробности по-долу. Последващата обработка ще включва промяна на типа персонализирано действие от 3078 на 1030, така че имитацията на потребител да е разрешена – което също означава, че персонализираното действие не се изпълнява с повишени стойности – и следователно може да успее само ако целият MSI е стартиран с повишено лице.
Забележка :По-долу предлагам да използвате функцията Burn на WiX (Open Source) или еквивалентен, способен търговски инструмент. Функцията Burn на WiX може да се използва с MSI файлове, създадени от проекта на Visual Studio 2017 Installer, или MSI файлове, създадени от всеки друг инструмент по този въпрос (също EXE файлове). Просто включвате генерирания от VS2017 MSI в WiX Bundle (или EXE файла). WiX очевидно може също да създава MSI файлове сам (за това е рамката). Връзки за бърз старт на WiX .
Технологична странност на MSI :Стартирането на други инсталатори от персонализирани действия на MSI не е добра практика. Ако другият инсталатор е друг MSI (а не просто не-MSI setup.exe), тогава дори не е възможно да се направи надеждно поради технически ограничения (няма две MSI InstallExecuteSequences
може да работи по едно и също време поради мютекс, който е зададен по време на инсталацията). С други думи:едновременните MSI инсталации са забранени и технически невъзможни.
Изгаряне :Въведете функцията за запис на WiX - downloader
/ bootstrapper
/ sequencer
инструмент, който изпълнява инсталации на пакети последователно от собствената си обвивка setup.exe
. Може да инсталира MSI файлове, EXE файлове и други видове пакети - един след друг без технически ограничения като това на мютекса на MSI. Серийно, а не паралелно работещо.
Инсталиране на SQL сървър :Можете да стартирате инсталатора на SQL Server EXE чрез такъв пакет Burn и можете да посочите параметрите, които изброявате като параметри на командния ред, вместо да го правите в управляван код (с изискванията за изпълнение, които налагат). След това стартирате основния си MSI след това от същия пакет.
Курс по Burn Crash :Има крива на обучение за Burn. Той е "забавен" (това е код / маркиране - винаги неприятен), но е много гъвкав. Искам да добавя този Разширен инсталатор изглежда има добра поддръжка за внедряване на SQL Server, дори и никога да не е имал време да проучи правилно в детайли. Installshield може да инсталира EXE файлове и MSI файлове последователно, като използва своите Suite проекти функция (проверете свързаната екранна снимка). Не съм сигурен за цялостната поддръжка на SQL Server.
Някои примерни връзки за запис :
- Зареждане
- Как да:Инсталирайте .NET Framework с помощта на Burn
- Приятна извадка за това, което Burn може да направи:https://github.com/frederiksen/Classic-WiX-Burn-Theme.
- Моята собствена маркировка на Burn Bundle в стил „Hello World“ (с допълнителни връзки).
- Нийл Слайтхолм:http://neilsleightholm.blogspot.com/2012/05/wix-burn-tipstricks.html
- Burn ви позволява да напишете свое собствено GUI приложение за настройка (разширено):https://github.com/rstropek/Samples/tree/master/WiXSamples/CustomBurnUI (повече мостри на едно ниво)
Някои връзки :
- Wix Burn:Как да спрем Bootstrapper да се инсталира сам
- Пример за Wix Burn helloworld
- Изчерпателен списък с флагове/опции на командния ред за Burn/bootstrapper в WiX
- Wix Burn – персонализиран шаблон
Добавяне на езикова трансформация .mst към Burn Bundle Chain?(твърде много връзки)