App-V Sequencer is now included in the Windows 10 Assessment and Deployment Kit (Windows ADK). In this post I’m going to show you how to build the Perfect Sequencer Machine using Windows 10 App-V Sequencer and Citrix Provisioning Services 7.9.
After having a very interesting Twitter conversation with App-V MVP Trentent Tye and Rory Monaghan I decided to try something Trent wrote about in his post Setting Up a PVS App-V Sequencer.
It’s freaking genius and I already have all the moving parts to get it working very quickly through my Automation Framework.
Best Practices is to include all Visual C++ Redistributables and .NET Frameworks on client machines. Therefore I always include those in my Reference Images together with all Windows Updates.
I’m also going to use some PowerShell magic to remove all the crap that comes with Windows 10, check the post Customize Windows 10 Start Screen and Optimize for Higher User Density for more info.
So with an updated Reference Image I only need to link that WIM file in the Product Task Sequence I’m about to build.
Windows 10 App-V Sequencer Unattended
We can no longer use the old appv_sequencer_setup.exe from Microsoft Desktop Optimization Pack (MDOP) on Windows 10. So first you’ll need to run Windows ADK for Windows 10, version 1607 and set Download Path for offline usage.
Below is the unattended script using adksetup.exe and Aaron Parker’s App-V 5 Sequencer Template.
# PowerShell Wrapper for MDT, Standalone and Chocolatey Installation - (C)2015 xenappblog.com
# Example 1: Start-Process "XenDesktopServerSetup.exe" -ArgumentList $unattendedArgs -Wait -Passthru
# Example 2 Powershell: Start-Process powershell.exe -ExecutionPolicy bypass -file $Destination
# Example 3 EXE (Always use ' '):
# (Start-Process "$PackageName.$InstallerType" $UnattendedArgs -Wait -Passthru).ExitCode
# Example 4 MSI (Always use " "):
# $UnattendedArgs = "/i $PackageName.$InstallerType ALLUSERS=1 /qn /liewa $LogApp"
# (Start-Process msiexec.exe -ArgumentList $UnattendedArgs -Wait -Passthru).ExitCode
Write-Verbose "Setting Arguments" -Verbose
$StartDTM = (Get-Date)
$Vendor = "Microsoft"
$Product = "App-V Sequencer"
$PackageName = "AppVSeq"
$InstallerType = "msi"
$Version = "10.1.15063.0"
$LogPS = "C:\Windows\Temp\$Product $Version PS Wrapper.log"
$LogApp = "C:\Windows\Temp\$Product.log"
$UnattendedArgs = "/i AppVSeq.msi /qn"
copy-item 'Appman Sequencer on amd64-x64_en-us.msi' -Destination AppVSeq.msi
Write-Verbose "Starting Installation of $Vendor $Product $Version" -Verbose
(Start-Process msiexec.exe -ArgumentList $UnattendedArgs -Wait -Passthru).ExitCode
Write-Verbose "Customization" -Verbose
sc.exe config wuauserv start= disabled
sc.exe config wSearch start= disabled
sc.exe config WinDefend start= disabled
Disable-ScheduledTask -TaskPath "\Microsoft\Windows\Defrag\" -TaskName "ScheduledDefrag"
new-item C:\Source -itemtype directory
copy-item AppV5.appvt -Destination C:\Source -Recurse
Write-Verbose "Stop logging" -Verbose
$EndDTM = (Get-Date)
Write-Verbose "Elapsed Time: $(($EndDTM-$StartDTM).TotalSeconds) Seconds" -Verbose
Write-Verbose "Elapsed Time: $(($EndDTM-$StartDTM).TotalMinutes) Minutes" -Verbose
As you can see above I’m also using VMware Optimization Tools for Tuning.
Finally configure these policies:
What’s extremely powerful is the combination of the above solution and App-V Scheduler from App-V MVP Bram Wolfs.
So from my Sequencing Machine I can save the App-V Package to the Package Source defined in App-V Scheduler and instantly do a Deploy Now to verify that the package works on another system e.g. Windows 2016 or Windows 10 accessed through Citrix Receiver.
NOTE: Remember to sequence on the lowest OS version used in your environment. Quick tests shows that only 1 of 3 packages sequenced on Windows 10 works on Windows 2012 R2, but all works on Windows 2016 TP5.
AWESOME Think about what we just did. We have just built a Perfect Windows 10 App-V Sequencer Machine; identical to the whole Sequencing Team and accessible all over the world. Update Once, Update All.