Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Именуван екземпляр на SQL Server с проект на Visual Studio 2017 Installer

Резюме :По същество долното гласи:1) Деактивирайте персонализираното действие за стартиране на SQL Server setup.exe във вашия текущ MSI. 2) Създайте основен WiX Burn Bundle за да стартирате SQLServer setup.exe първо и след това стартирайте генерирания от проект Visual StudioInstaller MSI след това. Или още по-добре, направете целия 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? (твърде много връзки)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проверете дали даден обект е съхранена процедура, като използвате OBJECTPROPERTY() в SQL Server

  2. Вземете идентификатора на обект от неговото име в SQL Server:OBJECT_ID()

  3. Изберете изявление, за да намерите дубликати в определени полета

  4. SQL OVER() клаузата – кога и защо е полезна?

  5. Общ преглед на оператора PRINT в SQL Server