App-V MVP renewed for 2012
I was quite relieved and grateful to receive the Microsoft MVP award again for 2012:
I was quite relieved and grateful to receive the Microsoft MVP award again for 2012:
Windows profiles become larger over time - it’s an inescapable fact. This means that if you are using roaming profiles, logons (and logoff) will be longer and longer. It’s not just individual file sizes, but also the number of files stored in a profile that will make the synchronisation process slower.
One approach to reducing profile sizes is to exclude certain folders. A better solution is to ditch roaming profiles and use a third-party solution to manage roaming of the user environment.
However, there will still be folders that need to be roamed to maintain the experience that users expect when moving between devices (i.e. consistency). For those folders we can implement some maintenance to keep them at a manageable size - that is remove files that are not needed in a roaming profile (e.g. log files) or delete files older than a specific number of days.
Warning: there’s a reason that Windows doesn’t do this maintenance itself - only each application vendor will have an understanding of whether specific files are required or can be discarded (hence the roaming and local portions of AppData). However, as any experienced Windows admin knows - many vendors either don’t test for or don’t care about roaming scenarios, therefore I strongly recommend testing this approach before production deployment.
As a part of an upcoming version of this configuration, I’ve created a script that will execute at logoff, before the profile is saved back to the network, that will perform two actions:
So for example, you could use the script to delete all .log files below %APPDATA%
or delete all Cookies older than 90 days.
The script is extremely simple on purpose and I recommend testing thoroughly before implementing - use at your own risk; however feedback is welcome.
' Profile clean up - remove unneeded or old files before logoff
' --------------------------------------------------------------
' Original scripts:
' http://www.wisesoft.co.uk/scripts/vbscript_recursive_file_delete_by_extension.aspx
' http://ss64.com/vb/syntax-profile.html
' http://csi-windows.com/toolkit/csigetspecialfolder
' Version 2.0; 27/12/2011
Option Explicit
On Error Resume Next 'Avoid file in use issues
Dim strExtensionsToDelete, strAppData, strUserProfile, objFSO, strCookies, strHistory, strRecent, objShellApp
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
Const CSIDL_COOKIES = "&H21"
Const CSIDL_HISTORY = "&H22"
Const CSIDL_RECENT = "&H08"
Const CSIDL_NETHOOD = "&H13"
Const CSIDL_APPDATA = "&H1A"
Const CSIDL_PROFILE = "&H28"
' Folder to delete files from (files will also be deleted from Subfolders)
strUserProfile = objShellApp.NameSpace(cint(CSIDL_PROFILE)).Self.Path
strAppData = objShellApp.NameSpace(cint(CSIDL_APPDATA)).Self.Path
strCookies = objShellApp.NameSpace(cint(CSIDL_COOKIES)).Self.Path
strHistory = objShellApp.NameSpace(cint(CSIDL_HISTORY)).Self.Path
strRecent = objShellApp.NameSpace(cint(CSIDL_RECENT)).Self.Path
strNetHood = objShellApp.NameSpace(cint(CSIDL_NETHOOD)).Self.Path
' Main
RecursiveDeleteByExtension strAppData, "tmp,log"
RecursiveDeleteOlder 90, strCookies
RecursiveDeleteOlder 14, strRecent
RecursiveDeleteOlder 21, strHistory
RecursiveDeleteOlder 21, strNetHood
RecursiveDeleteOlder 14, strAppData & "\Microsoft\Office\Recent"
'RecursiveDeleteOlder 5, strAppData & "\Sun\Java\Deployment\cache"
'RecursiveDeleteOlder 3, strAppData & "\Macromedia\Flash Player"
'RecursiveDeleteOlder 14, strUserProfile & "\Oracle Jar Cache"
Sub RecursiveDeleteByExtension(ByVal strPath,strExtensionsToDelete)
' Walk through strPath and sub-folders and delete files of type strExtensionsToDelete
Dim objFolder, objSubFolder, objFile, strExt
If objFSO.FolderExists(strPath) = True Then
Set objFolder = objFSO.GetFolder(strPath)
For Each objFile in objFolder.Files
For each strExt in Split(UCase(strExtensionsToDelete),",")
If Right(UCase(objFile.Path),Len(strExt)+1) = "." & strExt then
WScript.Echo "Deleting: " & objFile.Path
objFile.Delete(True)
Exit For
End If
Next
Next
For Each objSubFolder in objFolder.SubFolders
RecursiveDeleteByExtension objSubFolder.Path,strExtensionsToDelete
Next
End If
End Sub
Sub RecursiveDeleteOlder(ByVal intDays,strPath)
' Delete files from strPath that are more than intDays old
Dim objFolder, objFile, objSubFolder
If objFSO.FolderExists(strPath) = True Then
Set objFolder = objFSO.GetFolder(strPath)
For each objFile in objFolder.files
If DateDiff("d", objFile.DateLastModified,Now) > intDays Then
If UCase(objFile.Name) <> "DESKTOP.INI" Then ' Ensure we don't delete desktop.ini
WScript.Echo "Deleting: " & objFile.Path
objFile.Delete(True)
End If
End If
Next
For Each objSubFolder in objFolder.SubFolders
RecursiveDeleteOlder intDays,objSubFolder.Path
Next
End If
End Sub
Adobe released a new security advisory for Reader and Acrobat 9 and X this week to address details of an upcoming fix to these versions for a 0 day vulnerability. Exploits for this vulnerability exist for Reader and Acrobat 9 and are currently active:
Because Office is a core application of most desktop deployments, user interaction with Office and the user experience are important factors in the deployment of Office. From an administration perspective, providing a seamless user experience requires managing the user preferences of an application, independent of the application delivery method.
Several months ago, I used the The Archivist to create an archive and analysis of tweets with the #AppV hash tag. 1,740 tweets later (not all of which I’m sure are App-V related), we get an interesting picture of conversations around App-V. To view the archive visit this URL: http://bit.ly/appvarchive.
Mozilla has just released Firefox 8, so it’s time to look at virtualizing the new version. It’s a simple task to virtualize Firefox, as it lends itself well to application virtualization; however getting it right takes a little more effort. Here’s how to successfully sequence Mozilla Firefox 8.x.
In the official Microsoft TechNet forums, a question had been asked about sequencing Google Chrome and the poster states that when using the Chrome Enterprise Installer (a downloadable MSI for deployment inside an organisation), Chrome installs OK during the monitoring phase, but the folder is deleted at the end of monitoring and thus isn’t captured.
Surely one of the main goals of any good desktop delivery project is to remove the user’s reliance on any single device?
I’ve been doing some work recently virtualizing various versions of Office in App-V plus managing user preferences for those Office packages. Here’s something interesting that I’ve found – the size of the profile settings for a default installation of Office 2010 is massively different in size over previous versions of Office.