sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server navngivet instans med Visual Studio 2017 Installer-projekt

Oversigt :I det væsentlige siger nedenstående:1) Deaktiver den tilpassede handling for at køre SQL Server setup.exe i din nuværende MSI. 2) Opret en grundlæggende WiX Burn Bundle for at starte SQLServer setup.exe først, og start derefter dit Visual StudioInstaller-projektgenererede MSI bagefter. Eller endnu bedre, lav også hele MSI i WiX. Kommercielle værktøjer såsom Advanced Installer og Installshield er brugbare muligheder - de har understøttelse af dette, som er indbygget (funktionerne varierer afhængigt af version af forudsætning).

Brænd Bundle-Mockup (inspiration, mere inspiration):

Bare for at prøve at vise, hvordan WiX Burn-markeringen fungerer:

<?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>

Teknisk årsag :Jeg er ingen ekspert i Visual Studio Installer Projects - det skal siges - hver gang. Disse projekter har dog en række begrænsninger og særheder, som du har opdaget. En af særhederne er, at alle brugerdefinerede handlinger kører i udskudt tilstand og i systemkontekst (kører som LocalSystem) uden efterligning af den startende bruger. Dette er sandsynligvis årsagen til problemet set - som du selv siger.

Selvom det er muligt at efterbehandle den MSI, du får fra VS Installer Projects, er det bedre at eliminere brugen af ​​en tilpasset handling for at starte installationen af ​​SQL Server. Flere detaljer nedenfor. Efterbehandlingen ville involvere at ændre tilpasset handlingstype fra 3078 til 1030, så brugerefterligning er aktiveret - hvilket også betyder, at den tilpassede handling i øvrigt ikke kører forhøjet - og derfor kun kan lykkes, hvis hele MSI blev lanceret forhøjet.

Bemærk :Nedenfor foreslår jeg at bruge WiX's Burn-funktion (Open Source) eller et tilsvarende, egnet kommercielt værktøj. WiX's Burn-funktion kan bruges med MSI-filer, der er oprettet af Visual Studio 2017 Installer-projektet, eller MSI-filer, der er oprettet af et hvilket som helst andet værktøj for den sags skyld (også EXE-filer). Du tilslutter bare den VS2017-genererede MSI til WiX Bundle (eller EXE-filen). WiX kan åbenbart også selv lave MSI-filer (det er det, rammerne er til). WiX lynstart-links .

MSI Technology Quirk :At sparke andre installatører fra MSI brugerdefinerede handlinger er ikke god praksis. Hvis det andet installationsprogram er en anden MSI (og ikke kun en ikke-MSI setup.exe), så er det ikke engang muligt at gøre det pålideligt på grund af tekniske begrænsninger (ingen to MSI InstallExecuteSequences kan køre på samme tid på grund af en mutex, der er indstillet under installationen). Med andre ord:samtidige MSI-installationer er forbudte og teknisk umulige.

Brænd :Gå ind i WiX's brændefunktion - downloader / bootstrapper / sequencer værktøj, der kører pakkeinstallationer i rækkefølge fra sin egen wrapper setup.exe . Det kan installere MSI-filer, EXE-filer og andre slags pakker - den ene efter den anden uden tekniske begrænsninger som MSI's mutex. Seriel, ikke parallelkørsel.

SQL-serverinstallation :Du kan starte SQL Server EXE-installationsprogrammet via sådan en Burn-bundt, og du kan angive de parametre, du angiver som kommandolinjeparametre, i stedet for at gøre det i administreret kode (med de runtime-krav, det medfører). Så starter du din primære MSI bagefter fra det samme bundt.

Forbrændingskursus :Der er en indlæringskurve for Burn. Det er "fiddly" (det er kode / markup - altid fiddly), men det er meget fleksibelt. Jeg vil tilføje det avancerede installationsprogram ser ud til at have god support til SQL Server-implementering, selvom jeg aldrig har haft tid til at undersøge det ordentligt i detaljer. Installshield kan installere EXE-filer og MSI-filer i rækkefølge ved hjælp af dens Suite-projekter funktion (tjek det linkede skærmbillede). Ikke sikker på den overordnede SQL Server-understøttelse.

Nogle brændeprøvelinks :

  • Bootstrapping
  • Sådan:Installer .NET Framework ved hjælp af Burn
  • Et godt eksempel på, hvad Burn kan:https://github.com/frederiksen/Classic-WiX-Burn-Theme.
  • Min egen "Hello World"-stil Burn Bundle-markup (med yderligere links).
  • Neil Sleightholm:http://neilsleightholm.blogspot.com/2012/05/wix-burn-tipstricks.html
  • Burn giver dig mulighed for at skrive dit eget opsætnings-GUI-program (avanceret):https://github.com/rstropek/Samples/tree/master/WiXSamples/CustomBurnUI (flere eksempler op et niveau)

Nogle links :

  • Wix Burn:Sådan stopper du Bootstrapper i at installere sig selv
  • Eksempel på Wix Burn helloworld
  • Omfattende liste over kommandolinjeflag/indstillinger for Burn/bootstrapper i WiX
  • Wix Burn - tilpasset skabelon
  • Vil du tilføje sprogtransformation .mst'er til Burn Bundle Chain? (for mange links)


  1. SQL Query Where Column ='' returnerer Emoji-tegn 🎃 og 🍰

  2. Sådan fungerer Ln()-funktionen i PostgreSQL

  3. SQL-udvikler vil ikke starte

  4. MySQL-udløser ved Indsæt/Opdater begivenheder