App-V Buch
Unser App-V
Buch

- App-V Infrastruktur
- App-V Client
- App-V Sequenzierung
- Tools & Troubelshooting
- PowerShell mit App-V

Image is not available
Services
Image is not available
Image is not available
Image is not available
Image is not available
Image is not available
Image is not available

Hochwertige Lösungen mit bestem Kundenservice

Terminalserver- und Desktop Umgebungen mit der besten Usability

Schulungen und Workshops

Intuitive individuelle Lösungen

Standartanwendungen
App-V SaS über 20 Standardanwendungen

Alle wichtigen Browser

Wichtige Standardanwendungen

Wöchentlich aktuallisiert

Mit Support

Individuelle Anpassungen sind möglich

Schnell auf Sicherheitslücken reagieren

Bonus: Einige MSIX Pakete für WVD

App-V Buch
Services
Innovative IT-Lösungen
previous arrow
next arrow
Schriftgröße: +
6 minutes reading time (1239 words)

App-V 5 Rezept SSMS 17.x (SQL Server Management Studio 2016)

Grid_Glas

App-V 5 Rezept SQL Server Management Studio 2016 bzw. SSMS 17.x

Das Rechtliche zuerst: Die hier genannte Anleitung nutzt ihr auf eigene Gefahr. Ich kann nicht garantieren, dass alles immer gut funktioniert und übernehme keine Haftung für Schäden. Ich würde mich dennoch über eine Rückmeldung bei Problemen freuen, um andere in der Community zu unterstützen.

Hinweis: Wenn ihr mich und diesen Blog unterstützen wollt, dann kauft mein App-V 5 Buch (in deutscher Sprache): https://www.amazon.de/Softwarevirtualisierung-mit-App-V-Ein-Praxisbuch/dp/1544717318

Vor einigen Tagen habe ich mit einem unserer besten Citrix Spezialisten und Mitautor des Rheinwerk Buchs zu XenDesktop 7.x Jan Hendrik (Jan Hendriks genialer Citrix Blog) und seinem Kollegen Tobias einen Paketierungsworkshop für App-V gehalten. Hier ging es insbesondere um Applikationen, bei denen die Paketierung nicht funktioniert hat. U.a. war auch das SQL Server Management Studio 2016 bzw. SSMS 17 ein Thema. Das ließ sich auch mit dem App-V Rezept für SSMS 2014 nicht mehr paketieren.
Beim Versuch das SQL Server Management Studio 17 zu sequenzieren und zu speichern, kommt es zu dem Fehler HRESULT: 0x8007139F. Scheinbar funktioniert der App-V 5 Sequencer mit einigen Komponenten aus dem Paket nicht (@Microsoft – das ist ein Bug im Sequencer). Weiterhin gibt es keine Möglichkeit mehr, Visual Studio Shell 2015 (isolated) separat bei Microsoft herunter zu laden. In dem Blog von Rorymon gab es dazu nur noch den Hinweis, dass Microsoft das Management Studio (SSMS 17) für App-V nicht (mehr?) unterstützt. Ich denke, die fehlende Herstellerunterstützung trifft für viele Anwendungen zu. Daher haben wir es einfach einmal probiert (das ist schließlich eine Herausforderung).
Wenn man sich das Problem nun mit dem Prozessmonitor genauer anschaut, findet sich schnell die Komponente, die das HRESULT verursacht:
image001

Bzw.

C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.Tools.Applications.Utilities.ProjectRetargetService.resources
In diesem Verzeichnis liegen nun „nur“ Sprach-Ressource-Dateien u.a. auch für eine deutsche Komponente des Visual Studios. Wenn man diese Dateien löscht, switcht an dieser Stelle eine DotNet WPF Anwendung automatisch auf den Standard „Englisch“ um.
image002
Und das Speichern erfolgt nun auch ohne Probleme und das SQL Management Studio startet sogar als App-V Paket.
Im Weiteren kam es zu dem Problem mit der Lizensierung. Wir erinnern uns - vor einigen Jahren wurde die Express Edition des Visual Studios durch die Community Edition ersetzt, die genau wie die Professional Edition lizensiert sein muss. Die Lizensierung scheint hierbei an der SID des Systems zu hängen. App-V Rezepte für das SQL Management Studio 2012 und 2014 haben daher die Komponente „Visual Studio Shell 2010 (Isolated) separat installiert. Nun, SSMS 17.x (SQL Server Management Studio 2016) installiert eine Komponente „Visual Studio Shell 2015“. Diese Komponente ist leider nicht separat als Download erhältlich. Aber wenn man danach sucht gibt eine Möglichkeit, sich diese Komponente aus einer vorhandenen Installation zu extrahieren :-)
Wenn das SQL Server Management Studio SSMS 17 hingegen in provisionierten Systemen genutzt wird, muss man sich nicht diese Mühe machen. Bei einem Lizensierungsproblem bekommt ihr den folgenden Dialog:

image003

Wir haben also zwei Rezepte (Masterimage und Standardinstallation). Installiert wird mit einem Sequencer 5.1 auf einem Windows 8.1 Client.

SSMS 17 für neuinstallierte Systeme (die SID ändert sich)

  • Patchen des Sequencers auf einen aktuellen Stand (ansonsten kann SSMS nicht installiert werden)
  • Sequencer Snapshot erstellen
  • Sequencer Snapshot zurücksetzen
  • Installation ohne Sequencer des SSMS 17 (SSMS-Setup-ENU.exe oder SSMS-Setup-DEU.exe für die deutsche Version) https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms
  • Extrahieren der Visual Studio Shell 2015 Komponenten mit dem folgenden PowerShell (Get-VSISOShell.ps1). Das Skript erzeugt einen Ordner SSMSRuntime im Skriptverzeichnis:
# Extract all Visual Studio runtime (Visual Studio Shell 2015 (Isolated)) 
# elements from a SSMS Installation
# 2017' Andreas Nick


# fist: install SSMS 17.2!

if(-NOT (Test-path 'C:\ProgramData\Package Cache\FE948F0DAB52EB8CB5A740A77D8934B9E1A8E301\redist\vs_isoshell.exe'  )) {
    
    Write-Verbose "install SSMS 17.2!" -Verbose

} 

if( -not (test-path "$PSScriptRoot\SSMSRuntime")) {
    New-Item "$PSScriptRoot\SSMSRuntime" -ItemType directory | out-null

}

Write-Host "Extract all Visual Studio runtime (Visual Studio Shell 2015)" -ForegroundColor Cyan
Write-Host "Copy vs_isoshell.exe" -ForegroundColor Yellow
Copy-Item 'C:\ProgramData\Package Cache\FE948F0DAB52EB8CB5A740A77D8934B9E1A8E301\redist\vs_isoshell.exe' -Destination "$PSScriptRoot\SSMSRuntime\" -Force
Write-Host "Copy VS14-KB3095681.exe" -ForegroundColor Yellow
Copy-Item 'C:\ProgramData\Package Cache\02A26E554FBB4232ACD36E70D09F2C7893D399CD\redist\VS14-KB3095681.exe' -Destination "$PSScriptRoot\SSMSRuntime\" -Force
Write-Host "Copy vsta_setup.exe" -ForegroundColor Yellow
Copy-Item 'C:\ProgramData\Package Cache\5E6157D16EC044A823B2FD2C030ED6DECD2E997E\redist\vsta_setup.exe' -Destination "$PSScriptRoot\SSMSRuntime\" -Force
Write-Host "Copy vsta_ls.ex" -ForegroundColor Yellow
Copy-Item 'C:\ProgramData\Package Cache\4F812BBB2BE7E30CED293F8A229A5410D70DE6DB\redist\vsta_ls.exe' -Destination "$PSScriptRoot\SSMSRuntime\" -Force

Write-Host "Finish (wait 5 seconds)" -ForegroundColor Cyan

Start-Sleep -Seconds 5 
  • SSMSRUNTIME Verzeichnis mit folgendem Inhalt sichern
  • image004
  • Sequencer Snapshot zurücksetzen
  • Nun erst einmal das DotNet Framework 4.6.1 und die SSMSRUNTIME Komponenten auf dem Sequencer installieren. Dazu kann das folgende Skript genutzt werden (als Administratior):
# Install Visual Studio Shell 2015 (Isolated)) and components from SSMS 17.2
# 2017' Andreas Nick

Write-Host "Install Visual Studio runtime (Visual Studio Shell 2015)" -ForegroundColor Cyan
Write-Host "Install vs_isoshell.exe" -ForegroundColor Yellow

(Start-Process "$PSScriptRoot\SSMSRuntime\vs_isoshell" '/passive' -wait -Passthru).ExitCode Write-Host "Install VS14-KB3095681.exe" -ForegroundColor Yellow (Start-Process "$PSScriptRoot\SSMSRuntime\VS14-KB3095681.exe" '/passive' -wait -Passthru).ExitCode Write-Host "Install vsta_setup.exe" -ForegroundColor Yellow (Start-Process "$PSScriptRoot\SSMSRuntime\vsta_setup.exe" '/passive' -wait -Passthru).ExitCode Write-Host "Install vsta_ls.ex" -ForegroundColor Yellow (Start-Process "$PSScriptRoot\SSMSRuntime\vsta_ls.exe" '/passive' -wait -Passthru).ExitCode Write-Host "Finish (wait 5 seconds) - the system need a reboot" -ForegroundColor Cyan Start-Sleep -Seconds 5
  •  Jetzt den Sequencer starten und das SSMS 17.x installieren
  • Select „Create New Virtual Application“ 
  • „Create Package (default)“ Next>
  • „Standard Application (default)“ Next>
  • „Select Installer“ SSMS-Setup-ENU.exe (für die englische Version) oder SSMS-Setup-DEU.exe (für die deutsche Version)
  • Aufzeichnung des Sequencers starten und SSMS 17 installieren
  • Die Installation läuft nun durch. 
  • Das Paket weiterbearbeiten und ggf. die Shortcuts und FTA’s anpassen
  • On the „Advanced“ tab Allow Com“ und „full write permission“ in the package

image005

  • Optional: Im Paket die Ordner VFS\Windows\Installer und VFS\Common AppData\Package Cache (ca. 1GB groß) entfernen. Das Paket hat anschließend eine große von ca. 500 MB
  • Optional: Visual C++ Runtime nicht mit paketieren, „der Harken dafür muss raus“ – jetzt kann auch VFS\Windows\winsxs gelöscht werden.

Nun das Paket als App-V Paket speichern. Damit das Paket funktioniert müssen die Visual Studio Shell 2015 (Isolated) Komponenten immer zuvor installiert werden. Aber dafür könnt ihr das Skript oben nutzen.

SSMS für Masterimage basierende Systeme (PVS)

Wenn das SSMS auf einem geklonten System genutzt wird (Masterimage und/oder PVS) ändert sich die SID nicht und die Lizensierung funktioniert auch mit VSShell 2015 im Paket.

  • Installation des DotNet Framework 4.6.1
  • Patchen des Sequencers, da auf älteren, ungepatchten Systemen der SSMS nicht installiert werden kann
  • Sequencer Snapshot erstellen
  • Den App-V 5 Sequencer starten
  • Select „Create New Virtual Application“
  • „Create Package (default)“ Next>
  • „Standard Application (default)“ Next>
  • „Select Installer“ SSMS-Setup-ENU.exe (für die englische Version) oder SSMS-Setup-DEU.exe (für die deutsche Version)
  • Aufzeichnung des Sequencers Starten und SSMS 17 installieren

image006

image007

  • Restart des Sequencers, Sequencer booten lassen. Das System macht anschließend weiter
  • Select „I am finished installing“ and Next>
  • Next>
  • Nun das SQL Management Studio „NICHT“ starten. Bei Start the SQL Management Studio einfach nur Next> wählen
  • Select Costomize and Next>
  • If you don’t need a feature block 1 select „Next>“ on „Run each program…“
  • „Allow this package to run on any operating system“ and Next>
  • „Continue to modify“ und Next> anschließend Close drücken
  • Edit the shortcuts und fta’s (remove unwanted)
  • On the „Advanced“ tab Allow Com und full write permission in the package

image005

  • Jetzt im VFS den folgenden Ordner löschen:
  • VFS\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.Tools.Applications.Utilities.ProjectRetargetService.resources
    Dieser Ordner enthält nur Ressource-Dateien für andere Sprachen einer bestimmten Komponente. Das Visual Studio sollte dennoch weiter funktionieren. Diese kleine Komponente erscheint anschließend in English. Wer das nicht möchte, kann sein System auch mit der ersten Anleitung installieren!

image002

  • Alternativ könnte man auch über ein Skript diese Dateien in das App-V Paket einbinden. Ich erachte das nicht für notwendig. Wenn das nicht gemacht wird, kommt es zum HRESULT: 0x8007139F Fehler beim Speichern des Paketes.
  • 21. Optional: Im Paket die Ordner VFS\Windows\Installer und VFS\Common AppData\Package Cache (ca. 1GB groß) entfernen. Das Paket hat anschließend eine Große von ca. 500 MB
    22. Optional: Visual C++ Runtime nicht mit paketieren „der Harken dafür muss raus“ – jetzt kann auch VFS\Windows\winsxs gelöscht werden.

Abschließend das Paket speichern und testen.

Mandatory Profile für Windows 10 und Server 2016
PowerShell enable and disable autologon with a gen...

Ähnliche Beiträge

 

Kommentare 5

Andreas Nick am Donnerstag, 05. Oktober 2017 18:09

Hallo
Habe das eben ausprobiert und es funktioniert sehr gut! Super, vielen Dank und tolle Arbeit!
Schade ist antürlich, dass Visual Studio Shell 2015 (Isolated) Komponenten auf dem Client installiert werden müssen. Könnte man das nicht auch noch irgendwie ins Paket verfrachten? Ich beschäftige mich erst kurz mit der Matherie, von dem her weiss ich noch nicht wie man das machen könnte. Ich habe zwar Dein Buch gekauft und auch bis ca Seite 100 gelesen, finde das Ding aber nicht mehr
Nochmals vielen Dank und Gratulation, dass Ihr geschafft habt, was Microsoft selber nicht konnte!
Gruss aus der Schweiz
Matthias

Hallo Habe das eben ausprobiert und es funktioniert sehr gut! Super, vielen Dank und tolle Arbeit! Schade ist antürlich, dass Visual Studio Shell 2015 (Isolated) Komponenten auf dem Client installiert werden müssen. Könnte man das nicht auch noch irgendwie ins Paket verfrachten? Ich beschäftige mich erst kurz mit der Matherie, von dem her weiss ich noch nicht wie man das machen könnte. Ich habe zwar Dein Buch gekauft und auch bis ca Seite 100 gelesen, finde das Ding aber nicht mehr :( Nochmals vielen Dank und Gratulation, dass Ihr geschafft habt, was Microsoft selber nicht konnte! Gruss aus der Schweiz Matthias
Andreas Nick am Freitag, 06. Oktober 2017 10:30

Hallo Matthias,
danke, ich freue mich über Deinen Kommentar! Wir haben zwei Rezepte im Artikel (eins mit der VS Iso Shell im Paket). Die Komponenten im Paket funktionieren bei masterimagebasierenden Systemen. Also MCS oder PVS (SID bleibt gleich, VS Lizensierung funktioniert). Nur kommt es dabei zu dem beschriebenen HRESULT. Hier muss ein Ordner gelöscht werden. Alternativ könnten die Installationen und das Powershell zur Installation auch im AppXManifest (ja, AppXManifest oder alternativ DeploymentConfiguration) als Skript eingebunden werden. Dann werden diese Komponenten mit der Paketbereitstellung "OnAddPackage" installiert und müssen nicht mehr separat installiert werden. Das wird vermutlich etwas Arbeit machen.

Hallo Matthias, danke, ich freue mich über Deinen Kommentar! Wir haben zwei Rezepte im Artikel (eins mit der VS Iso Shell im Paket). Die Komponenten im Paket funktionieren bei masterimagebasierenden Systemen. Also MCS oder PVS (SID bleibt gleich, VS Lizensierung funktioniert). Nur kommt es dabei zu dem beschriebenen HRESULT. Hier muss ein Ordner gelöscht werden. Alternativ könnten die Installationen und das Powershell zur Installation auch im AppXManifest (ja, AppXManifest oder alternativ DeploymentConfiguration) als Skript eingebunden werden. Dann werden diese Komponenten mit der Paketbereitstellung "OnAddPackage" installiert und müssen nicht mehr separat installiert werden. Das wird vermutlich etwas Arbeit machen.
Andreas Nick am Dienstag, 10. Oktober 2017 10:48

Wir wollen das ganze für eine RDS Farm einsetzen, allerdings ohne MCS oder PVS. Ich glaube ich kombiniere Eure Lösung mit powershell skript einfach mit dem Skript für die Installation von allen Visual C++ Redist. So muss ich einfach ein Skript aufrufen wenn ich wieder einen neuen Session Host in Betrieb nehme. Vielleicht solltet Ihr die guten Neuigkeiten noch im Technet-Forum verbreiten

Wir wollen das ganze für eine RDS Farm einsetzen, allerdings ohne MCS oder PVS. Ich glaube ich kombiniere Eure Lösung mit powershell skript einfach mit dem Skript für die Installation von allen Visual C++ Redist. So muss ich einfach ein Skript aufrufen wenn ich wieder einen neuen Session Host in Betrieb nehme. Vielleicht solltet Ihr die guten Neuigkeiten noch im Technet-Forum verbreiten :)
Andreas Nick am Freitag, 01. Dezember 2017 11:30

Hallo
Ich habe das eben ausprobiert und es funktioniert sehr gut!
Ich habe lange im Internet gesucht, aber jedes Mal ohne Ergebnis.
Super, danke und tolle Arbeit!
Gruss aus den Niederlanden
Gerd

Hallo Ich habe das eben ausprobiert und es funktioniert sehr gut! Ich habe lange im Internet gesucht, aber jedes Mal ohne Ergebnis. Super, danke und tolle Arbeit! Gruss aus den Niederlanden Gerd
Andreas Nick am Freitag, 01. Dezember 2017 11:33

Ich freue mich und vielen Dank für die Rückmeldung und Deinen Kommentar

Ich freue mich und vielen Dank für die Rückmeldung und Deinen Kommentar :D
Bereits registriert? Hier einloggen
Donnerstag, 12. Dezember 2024

Sicherheitscode (Captcha)

Nick Informationstechnik GmbH
Dribusch 2
30539 Hannover

+49 (0) 511 165 810 190
+49 (0) 511 165 810 199

infonick-it.de

Newsletter

Anmeldung zum deutschen M.A.D. Newsletter mit Informationen zur Anwendungsvirtualisierung!

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.