Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Nazwane wystąpienie programu SQL Server z projektem Instalatora programu Visual Studio 2017

Podsumowanie :W skrócie, poniżej stwierdza się:1) Wyłącz niestandardową akcję, aby uruchomić SQL Server setup.exe w aktualnym MSI. 2) Utwórz podstawowy WiX Burn Bundle aby uruchomić SQLServer setup.exe najpierw, a następnie uruchom wygenerowany przez projekt Visual StudioInstaller MSI następnie. Albo jeszcze lepiej, stwórz całe MSI również w WiX. Narzędzia komercyjne, takie jak Instalator zaawansowany i Installshield są realnymi opcjami - obsługują to, co jest wbudowane (funkcje różnią się w zależności od wersji wymagań wstępnych).

Spal makieta pakietu (inspiracja, więcej inspiracji):

Aby pokazać, jak działają znaczniki 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>

Przyczyna techniczna :Nie jestem ekspertem od Projektów Instalatora Visual Studio - trzeba powiedzieć - za każdym razem. Jednak te projekty mają szereg ograniczeń i dziwactw, jak już odkryłeś. Jednym z dziwactw jest to, że wszystkie niestandardowe akcje działają w trybie odroczonym iw kontekście systemowym (działa jako LocalSystem) bez podszywania się pod użytkownika uruchamiającego. Jest to prawdopodobnie przyczyna zauważonego problemu - jak sam twierdzisz.

Chociaż możliwe jest przetwarzanie końcowe pliku MSI otrzymanego z projektów VS Installer, lepiej jest wyeliminować stosowanie akcji niestandardowej w celu rozpoczęcia instalacji programu SQL Server. Więcej szczegółów poniżej. Przetwarzanie końcowe wymagałoby zmiany typu akcji niestandardowej z 3078 na 1030, dzięki czemu włączona jest personifikacja użytkownika – co oznacza również, że akcja niestandardowa nie jest uruchamiana z podwyższonym poziomem uprawnień – i dlatego może się powieść tylko wtedy, gdy cały MSI został uruchomiony z podwyższonym poziomem uprawnień.

Uwaga :Poniżej sugeruję użycie funkcji WiX's Burn (Open Source) lub równoważnego, wydajnego narzędzia komercyjnego. Funkcja nagrywania WiX może być używana z plikami MSI utworzonymi przez projekt Instalatora programu Visual Studio 2017 lub plikami MSI utworzonymi przez dowolne inne narzędzie do tego celu (również pliki EXE). Wystarczy podłączyć plik MSI wygenerowany przez VS2017 do pakietu WiX (lub pliku EXE). WiX może oczywiście sam tworzyć pliki MSI (do tego właśnie służy framework). Linki szybkiego startu WiX .

Dziwactwo w zakresie technologii MSI :Wyrzucanie innych instalatorów z akcji niestandardowych MSI nie jest dobrą praktyką. Jeśli innym instalatorem jest inny plik MSI (a nie tylko plik setup.exe inny niż MSI), to nie jest nawet możliwe wykonanie tego w sposób niezawodny ze względu na ograniczenia techniczne (brak dwóch InstallExecuteSequences MSI może działać w tym samym czasie dzięki mutexowi ustawionemu podczas instalacji). Innymi słowy:jednoczesne instalacje MSI są zabronione i technicznie niemożliwe.

Spal :Wejdź do funkcji nagrywania WiX - downloader / bootstrapper / sequencer narzędzie, które uruchamia instalacje pakietów w sekwencji z własnego opakowania setup.exe . Może instalować pliki MSI, pliki EXE i inne rodzaje pakietów - jeden po drugim, bez ograniczeń technicznych, takich jak mutex MSI. Praca szeregowa, a nie równoległa.

Instalacja serwera SQL :Możesz wyrzucić instalator SQL Server EXE za pomocą takiego pakietu Burn i możesz określić parametry, które wymieniasz jako parametry wiersza poleceń, zamiast robić to w kodzie zarządzanym (z wymaganiami środowiska wykonawczego, które to pociąga za sobą). Następnie uruchamiasz swoje główne MSI z tego samego pakietu.

Burn Crash Course :Jest krzywa uczenia się dla Burn. Jest „niezdarny” (to jest kod/znacznik – zawsze niesforny), ale jest bardzo elastyczny. Chcę dodać, że Instalator zaawansowany wydaje się mieć dobre wsparcie dla wdrażania SQL Server, nawet jeśli nigdy nie miałem czasu na szczegółowe zbadanie. Zainstaluj tarczę może instalować kolejno pliki EXE i MSI, korzystając ze swoich projektów Suite funkcja (sprawdź połączony zrzut ekranu). Nie jestem pewien ogólnej obsługi SQL Server.

Niektóre linki do nagrywania próbek :

  • Bootstrapping
  • Jak:zainstalować .NET Framework za pomocą Burn
  • Ładna próbka tego, co może zrobić Burn:https://github.com/frederiksen/Classic-WiX-Burn-Theme.
  • Mój własny znacznik Burn Bundle w stylu „Hello World” (z dalszymi linkami).
  • Neil Sleightholm:http://neilsleightholm.blogspot.com/2012/05/wix-burn-tipstricks.html
  • Burn umożliwia napisanie własnej konfiguracji aplikacji GUI (zaawansowane):https://github.com/rstropek/Samples/tree/master/WiXSamples/CustomBurnUI (więcej próbek na jednym poziomie)

Niektóre linki :

  • Wix Burn:Jak powstrzymać Bootstrappera przed instalacją
  • Przykład Witaj świecie Wix Burn
  • Kompleksowa lista flag/opcji wiersza poleceń do nagrywania/bootstrappera w WiX
  • Wix Burn — szablon niestandardowy
  • Dodać transformację językową .mst do Burn Bundle Chain? (zbyt wiele linków)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak zapisać liczbę do funkcji słowa w serwerze sql

  2. Jak znaleźć aktualny poziom transakcji?

  3. Tworzenie indeksu ciągów z kodem jako pierwszy

  4. SYSDATETIMEOFFSET() Przykłady w SQL Server (T-SQL)

  5. 3 pytania dotyczące monitorowania serwera SQL przy przejmowaniu stanowiska DBA