sql >> Databáze >  >> RDS >> Sqlserver

SQL Server pojmenovaná instance s projektem instalačního programu Visual Studio 2017

Shrnutí :Níže uvedené v podstatě říká:1) Zakažte vlastní akci pro spuštění SQL Serveru setup.exe ve vaší aktuální MSI. 2) Vytvořte základní WiX Burn Bundle ke spuštění SQLServeru setup.exe nejprve a poté spusťte MSI vygenerovaný projektem Visual StudioInstaller později. Nebo ještě lépe, udělejte celé MSI také ve WiX. Komerční nástroje, jako je Advanced Installer a Installshield jsou životaschopné možnosti – obsahují podporu pro toto, která je vestavěná (funkce se liší v závislosti na verzi předpokladu).

Burn Bundle-Mockup (inspirace, další inspirace):

Jen pro pokus ukázat, jak funguje označení 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>

Technická příčina :Nejsem žádný expert na Visual Studio Installer Projects – nutno říci – pokaždé. Jak jste však zjistili, tyto projekty mají řadu omezení a zvláštností. Jednou ze zvláštností je, že všechny vlastní akce běží v odloženém režimu a v systémovém kontextu (běží jako LocalSystem) bez předstírání identity spouštějícího uživatele. Toto je pravděpodobně příčina zjištěného problému – jak sám uvádíte.

Ačkoli je možné dodatečně zpracovat MSI, které získáte z projektů VS Installer, je lepší eliminovat použití vlastní akce k zahájení instalace SQL Serveru. Více podrobností níže. Následné zpracování by zahrnovalo změnu typu vlastní akce z 3078 na 1030, takže je povoleno zosobnění uživatele – což také znamená, že vlastní akce se mimochodem nespouští se zvýšenou úrovní – a může tedy být úspěšná pouze v případě, že byla celá MSI spuštěna se zvýšenou úrovní.

Poznámka :Níže doporučuji použít funkci WiX Burn (Open Source) nebo ekvivalentní, schopný komerční nástroj. Funkci WiX Burn lze použít se soubory MSI vytvořenými projektem Visual Studio 2017 Installer nebo se soubory MSI vytvořenými jakýmkoli jiným nástrojem (také soubory EXE). Stačí připojit MSI vygenerované VS2017 do WiX Bundle (nebo souboru EXE). WiX samozřejmě umí sám vytvářet MSI soubory (k tomu slouží framework). Odkazy pro rychlý start WiX .

Technologie MSI Quirk :Vyhazování jiných instalátorů z vlastních akcí MSI není dobrá praxe. Pokud je druhým instalačním programem jiný MSI (a ne pouze setup.exe jiného typu než MSI), pak to ani není možné spolehlivě provést kvůli technickým omezením (žádné dva MSI InstallExecuteSequences může běžet současně kvůli mutexu, který je nastaven během instalace). Jinými slovy:souběžné instalace MSI jsou zakázány a technicky nemožné.

Vypálit :Vstupte do funkce vypalování WiX - downloader / bootstrapper / sequencer nástroj, který spouští instalace balíčků v sekvenci z vlastního obalu setup.exe . Může instalovat soubory MSI, EXE soubory a další druhy balíčků - jeden po druhém bez technických omezení, jako je tomu u mutexu MSI. Sériový, nikoli paralelní běh.

Instalace serveru SQL :Instalační program SQL Server EXE můžete spustit prostřednictvím takového balíčku Burn a můžete zadat parametry, které uvádíte jako parametry příkazového řádku, místo toho, abyste to dělali ve spravovaném kódu (s požadavky na běh, které s tím souvisí). Poté spustíte hlavní MSI ze stejného balíčku.

Kurz Burn Crash :Pro Burn existuje křivka učení. Je to "nešikovné" (je to kód / označení - vždy nešikovné), ale je velmi flexibilní. Chci přidat tento Pokročilý instalační program Zdá se, že má dobrou podporu pro nasazení SQL Serveru, i když nikdy neměl čas důkladně prozkoumat. Installshield může instalovat soubory EXE a soubory MSI postupně pomocí svých projektů sady funkce (zkontrolujte propojený snímek obrazovky). Nejste si jisti celkovou podporou SQL Server.

Některé vypálit ukázkové odkazy :

  • Bootstrapping
  • Jak na to:Instalace rozhraní .NET Framework pomocí Burn
  • Pěkná ukázka toho, co Burn umí:https://github.com/frederiksen/Classic-WiX-Burn-Theme.
  • Moje vlastní označení Burn Bundle ve stylu „Hello World“ (s dalšími odkazy).
  • Neil Sleightholm:http://neilsleightholm.blogspot.com/2012/05/wix-burn-tipstricks.html
  • Burn vám umožňuje napsat vlastní aplikaci GUI pro nastavení (pokročilé):https://github.com/rstropek/Samples/tree/master/WiXSamples/CustomBurnUI (více vzorků o jednu úroveň)

Některé odkazy :

  • Wix Burn:Jak zabránit instalaci Bootstrapperu
  • Příklad helloworld Wix Burn
  • Úplný seznam příznaků/možností příkazového řádku pro Burn/bootstrapper ve WiX
  • Wix Burn – vlastní šablona
  • Přidání souborů .mst pro transformaci jazyka do Burn Bundle Chain? (příliš mnoho odkazů)


  1. Ovlivňuje objednávka Sql JOIN výkon?

  2. Přepisování dotazů pro zlepšení výkonu

  3. Vyberte všechny měsíce v daném časovém období, včetně těch s 0 hodnotami

  4. PG::InvalidParameterValue:ERROR:neplatná hodnota parametru client_min_messages:panic