Buch
- App-V Infrastruktur
- App-V Client
- App-V Sequenzierung
- Tools & Troubelshooting
- PowerShell mit App-V
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:
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.
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:
Wir haben also zwei Rezepte (Masterimage und Standardinstallation). Installiert wird mit einem Sequencer 5.1 auf einem Windows 8.1 Client.
# 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
# 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
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.
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.
Abschließend das Paket speichern und testen.
Kommentare 5
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 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.
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
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
Ich freue mich und vielen Dank für die Rückmeldung und Deinen Kommentar