21 February 2013

MDT 2012 Update 1: Skip Roles and Features

There is a new window in the MDT Wizard. It is Roles and Features. If you are wanting to skip this, you will need to add the following to the customsettings.ini file:

  • SkipRoles=YES

20 February 2013

MDT: Removing duplicate and old drivers

If you have setup your driver drivers like I have in which they are separated by OS-->Make-->Model, you will see duplicate drivers in each Model folder. This is caused by the fact that some drivers exist in more than one category. Although you have setup the driver folders in the GUI portion of MDT, MDT sorts them differently in the windows folders. It sorts them by driver type, such as display, bluetooth, modem, and such. They are sorted in the GUI interface through the XML file that sorts the GUIDs into the groups you specified.

Within each group folder, you will see duplicates with (1), (2) and such appearing after the name. This is because a driver may exist under both System and Net for instance. The NIC driver is commonly put in with the system drivers besides the network drivers folder, thereby causing it to appear twice.

To trim the driver list down, sort the Name field. When you find your first duplicated driver, look at the dates on the original and the dupe. If they do not match, then select the oldest ones to delete, leaving just one. Under the actions list, click Delete under the driver name, NOT under the folder name. If you click delete under the folder, the entire folder will be deleted. I have done that and could have kicked myself afterwards, so pay close attention. Once you click delete, do NOT select the Completely delete these items, even if there are copies in other folders. (Force)! If you select this, it will delete that driver across all models and types. I did this and then found out when building other model machines, they were missing those drivers. I had to go back and re-import the drivers for every model. When you leave it unchecked, it only deletes the pointer to the driver and not the actual driver.

Next, you will see duplicate drivers, except with different versions. You will most definitely want to clean up this list so that only the latest driver is there. For instance, I had one model that had 6 versions of NVIDIA Display NVDW.INF in the list. I deleted all, except for the latest one. I also made sure I only deleted it from the list and not completely from the folder.

This not only cleans up the number of drivers copied down during the build, but it also ensures the latest driver gets installed too, as I do see on occasion that the older driver got installed.

NOTE: Before you do any of this, make sure you have the original drivers that you imported into MDT in a windows folder, as if you make a mistake and need to re-import them. 

MDT: Renaming the Task Sequence ID

Once a task sequence has been created, it is grayed out not allowing for it to be changed. There is an easy workaround to accomplish this.

  1. Open up the TaskSequences.xml file. Search for the task sequence ID. Change that to your desired new name.
  2. Rename the subfolder named after the task sequence ID to the same name you changed it to inside the XML file in step 1.
That is all that is to renaming the task sequence ID.

NOTE: Before you do this, I would first backup the control directory. Changes to files in this directory can disable the entire MDT.

Cleaning up old task sequences

If you ever go into the Control folder of the deployment share, you will see every task sequence that has ever been created in there. They are listed by sub-folder names. MDT does not delete these when you delete a task sequence. The first thing you want to do is to open up the TaskSequences.xml file to compare it to the Task sequence list that appears in the Windows Deployment Wizard. You don't want to delete a task sequence that is being used. Once you have made sure it is not in the list, you can go ahead and delete the old task sequence folders. There should be no more references to these folders in any of the scripts. Just to make sure, I would also do a directory search on the task sequence folder name just to make sure it does not appear in any of the xml files. 

iPad 1 Slowness after 5.1.1 Update

After the last update of iOS to 5.1.1, you have probably noticed that it slowed down drastically. This is because of the new features added by the update. The iPad 1 only has 256 MBs of RAM. The extra services and features added causes the iPad 1 to crash quite often, especially Safari. The best route of course, is to upgrade, but if you are like me, I find it a pure waste of natural resources to upgrade at every possible time, so I usually try and wait at least 4 versions before doing so. It is more eco-friendly.

To stop the iPad from continuously crashing and alleviate the slowness, you will need to disable some of the new features. Here is the list of features I disabled on my iPad 1 that solved the issue.

  • Disabled Settings-->Location Services on quite a few of the apps that I really did not need it turned on for. Definitely leave the Find My iPad turned on
  • Turned off the Settings-->General-->Multitasking Gestures
  • Turned off all of the Settings-->iCloud except for the Find My iPad
  • Under Settings-->Mail, Contacts, Calendars, I set Fetch New Data to Manually
  • Turned off Settings-->Messages, as that takes up a good amount of memory
  • Under Settings-->Photos, I turned off Photo Stream
  • Under Settings-->Store, I turned off Music, Apps, and Books
After making those changes, the iPad is almost back to normal. It is not going to completely correct it, as the apps written in updated code will most likely also cause it to slow down. 

19 February 2013

MDT: Defining and Implementing Make and Model in the SQL Database

This is a very easy, but also tricky process. The first thing you will need to do of course is setup your SQL database if it has not already been done. Next, you will need to obtain the how the make and model of the machine is written in the bios by doing a WMI query. Once this is done, you will want to enter the different make and models in the SQL database. If it is going to be pointing to an application to execute for that specific make and model, you will need to go to the application to make sure Hide this application in the Deployment Wizard is unchecked. If it is checked, the application will not be executed. This is because it checks off the application to be executed during the Windows Deployment Wizard in the Applications screen. If it does not appear there, then it can't be run. That is all that is to doing the make and model.

NOTE: When I do a WMI query, I have the VBScript to put a quotation mark at the end of the name. I do this because sometimes the manufacturer will put spaces after it and if you do not enter it exactly like it is when queried, MDT will not recognize the machine.

17 February 2013

SMS 2003: Deploying apps from a network share

You have software already on a network share and want to deploy it to everyone within the local network. You don't have to waste time and space, especially if it is an enormous application, by populating the distribution point. You can deploy it directly from the network share through SMS.

The first step to do this is to create the package. There will be no data source, so all you have to do is populate the General Tab for informational purposes. Next, you will click on the programs and create a new program. In the General Tab, you will enter the command line to execute the installation. The start in field is what points the package to the network share that contains the installation package. Under the Environment Tab, you will need to select Whether or Not a user is logged on, click Run with Administrative Rights, and select Use Software Installation Account. You can now setup the Collection and Advertisement. That is all that is to setting up an SMS package that can deploy from a network share, instead of its distribution point. I am now working with SCCM and will update this as I verify if this is also possible with SCCM. 

07 February 2013

Deploying Photoshop Elements 11

Deploying Photoshop Elements is different from the rest of the Adobe CS6 applications. The MSI file cannot be executed independently. The setup.exe file must be run. The setup.ini is the key to distributing the software in either a silent or basic display mode. Inside the ini file, the two parts that are pertinent to an unattended installation are [Launch] and [OEM]. Under [Launch] you can delete all of the CommandLines, except for CommandLine0. These command lines are there for installing different language packs, which you can only install one. I live in the US, so this is the command line I successfully used:

CommandLine0=msiexec /i "Adobe Photoshop Elements 11.msi" TRANSFORMS=1033.mst ELEMENTS_EN_US=1 ORGANIZER_EN_US=1 COUNTRY=244 AgreeToLicense=Yes /qb- /norestart

The second part to populate is the SERIALNUMBER under [OEM]. You will need to enter it with dashes.

The required items are the country, agreement to the license, serial number, and language. Once these are populated in the above listed items, the installation becomes unattended. Here is the full setup.ini file that I edited and has now made the setup.exe unattended.

 CommandLine0=msiexec /i "Adobe Photoshop Elements 11.msi" TRANSFORMS=1033.mst ELEMENTS_EN_US=1 ORGANIZER_EN_US=1 COUNTRY=244 AgreeToLicense=Yes /qb- /norestart  
 Title=Adobe Photoshop Elements 11 - Setup  
 OSErrMsg=Your system does not support the minimum operating system requirement. Installation of Photoshop Elements 11 is supported on Windows XP, Windows Vista, Windows 7 Operating Systems.  
 AdminUserErrMsg=Please login as an Administrator and then run the installer.  
 MultipleInstances=Installation is already in progress. Please complete that installation.  
 BuildIncompletErrMsg=Setup.exe was not able to locate some components required for successful installation of the product. Please retry after making sure the complete set of files is available.  
 Title=Adobe Photoshop Elements 11 - Setup  
 OSErrMsg=Ihr System erfüllt nicht die Mindestanforderung für das Betriebssystem. Die Installation von Photoshop Elements 11 wird unter Windows XP, Windows Vista oder Windows 7 unterstützt.  
 AdminUserErrMsg=Melden Sie sich als Administrator an und führen Sie dann das Installationsprogramm aus.  
 MultipleInstances=Die Installation wird bereits ausgeführt. Schließen Sie diese Installation ab.  
 BuildIncompletErrMsg=Die Datei "Setup.exe" konnte einige für die Installation des Produkts erforderliche Komponenten nicht finden. Stellen Sie sicher, dass alle Dateien verfügbar sind und versuchen Sie es erneut.  
 Title=Installation d'Adobe Photoshop Elements 11  
 OSErrMsg=Votre système ne prend pas en charge la configuration minimale requise. Vous ne pouvez installer Photoshop Elements 11 que sur les systèmes d'exploitation Windows XP, Windows Vista ou Windows 7.   
 AdminUserErrMsg=Veuillez vous connecter en tant qu'administrateur, puis lancer le programme d'installation.  
 MultipleInstances=Une installation est déjà en cours. Vous devez terminer cette installation.  
 BuildIncompletErrMsg=Setup.exe n'a pas pu trouver certains des composants nécessaires à l'installation du produit. Assurez-vous que tous les fichiers sont disponibles, puis réessayez.  
 Title=Adobe Photoshop Elements 11 セットアップ  
 OSErrMsg=ご使用のシステムは、オペレーティングシステムの最低要件を満たしていません。Photoshop Elements 11 をインストールできるオペレーティングシステムは、Windows XP、Windows Vista または Windows 7 です。  
 MultipleInstances=インストールは既に進行しています。 このインストールを完了させてください。  
 BuildIncompletErrMsg=Setup.exe で、製品の正常なインストールに必要な一部のコンポーネントを検出できませんでした。ファイル一式が揃っていることを確認し、再度実行してください。  

If you live in a different country, thereby needing a different country code, you can obtain it by opening up the Adobe Photoshop Elements 11.msi file in ORCA. The list of countries and associated country codes are under the ComboBox Table. There, you will see the list. The value you are looking for is in the Value (s64) column. For your convenience, here is a list of country codes I extracted from the MSI file:

Property (s72) Order (i2) Value (s64)    Text (L64)
COUNTRY 1 3        Afghanistan
COUNTRY 2 6    Albania
COUNTRY 3 4    Algeria
COUNTRY 4 10    American Samoa
COUNTRY 5 8    Andorra
COUNTRY 6 9    Angola
COUNTRY 7 300    Anguilla
COUNTRY 8 301    Antarctica
COUNTRY 9 2    Antigua and Barbuda
COUNTRY 10 11    Argentina
COUNTRY 11 7    Armenia
COUNTRY 12 302    Aruba
COUNTRY 13 303       Ascension Island
COUNTRY 14 304    Ashmore and Cartier Islands
COUNTRY 15 12    Australia
COUNTRY 16 14    Austria
COUNTRY 17 5    Azerbaijan
COUNTRY 18 22    Bahama, The
COUNTRY 19 17    Bahrain
COUNTRY 20 305    Baker Island
COUNTRY 21 23    Bangladesh
COUNTRY 22 18    Barbados
COUNTRY 23 29    Belarus
COUNTRY 24 21    Belgium
COUNTRY 25 24    Belize
COUNTRY 26 28    Benin
COUNTRY 27 20    Bermuda
COUNTRY 28 34    Bhutan
COUNTRY 29 26    Bolivia
COUNTRY 30 25    Bosnia and Herzegovina
COUNTRY 31 19    Botswana
COUNTRY 32 306    Bouvet Island
COUNTRY 33 32    Brazil
COUNTRY 34 114    British Indian Ocean Territory
COUNTRY 35 37    Brunei
COUNTRY 36 35    Bulgaria
COUNTRY 37 245    Burkina Faso
COUNTRY 38 38    Burundi
COUNTRY 39 40    Cambodia
COUNTRY 40 49    Cameroon
COUNTRY 41 39    Canada
COUNTRY 42 57    Cape Verde
COUNTRY 43 307    Cayman Islands
COUNTRY 44 55    Central African Republic
COUNTRY 45 41    Chad
COUNTRY 46 308    Channel Islands
COUNTRY 47 46    Chile
COUNTRY 48 45    China
COUNTRY 49 309    Christmas Island
COUNTRY 50 310    Clipperton Island
COUNTRY 51 311    Cocos (Keeling) Islands
COUNTRY 52 51    Colombia
COUNTRY 53 50    Comoros
COUNTRY 54 43    Congo
COUNTRY 55 44    Congo (DRC)
COUNTRY 56 312    Cook Islands
COUNTRY 57 313    Coral Sea Islands
COUNTRY 58 54    Costa Rica
COUNTRY 59 119    Côte d’Ivoire
COUNTRY 60 108    Croatia
COUNTRY 61 56    Cuba
COUNTRY 62 59    Cyprus
COUNTRY 63 75    Czech Republic
COUNTRY 64 61    Denmark
COUNTRY 65 314    Diego Garcia
COUNTRY 66 62    Djibouti
COUNTRY 67 63    Dominica
COUNTRY 68 65    Dominican Republic
COUNTRY 69 7299303    East Timor
COUNTRY 70 66    Ecuador
COUNTRY 71 67    Egypt
COUNTRY 72 72    El Salvador
COUNTRY 73 69    Equatorial Guinea
COUNTRY 74 71    Eritrea
COUNTRY 75 70    Estonia
COUNTRY 76 73    Ethiopia
COUNTRY 77 315    Falkland Islands (Islas Malvinas)
COUNTRY 78 81    Faroe Islands
COUNTRY 79 78    Fiji Islands
COUNTRY 80 77    Finland
COUNTRY 81 84    France
COUNTRY 82 317    French Guiana
COUNTRY 83 318    French Polynesia
COUNTRY 84 319    French Southern and Antarctic Lands
COUNTRY 85 87    Gabon
COUNTRY 86 86    Gambia, The
COUNTRY 87 88    Georgia
COUNTRY 88 94    Germany
COUNTRY 89 89    Ghana
COUNTRY 90 90    Gibraltar
COUNTRY 91 98    Greece
COUNTRY 92 93    Greenland
COUNTRY 93 91    Grenada
COUNTRY 94 321    Guadeloupe
COUNTRY 95 322    Guam
COUNTRY 96 323    Guantanamo Bay
COUNTRY 97 99    Guatemala
COUNTRY 98 324    Guernsey
COUNTRY 99 100    Guinea
COUNTRY 100 196    Guinea-Bissau
COUNTRY 101 101    Guyana
COUNTRY 102 103    Haiti
COUNTRY 103 325    Heard Island and McDonald Islands
COUNTRY 104 106    Honduras
COUNTRY 105 104    Hong Kong S.A.R.
COUNTRY 106 326    Howland Island
COUNTRY 107 109    Hungary
COUNTRY 108 110    Iceland
COUNTRY 109 113    India
COUNTRY 110 111    Indonesia
COUNTRY 111 116    Iran
COUNTRY 112 121    Iraq
COUNTRY 113 68    Ireland
COUNTRY 114 117    Israel
COUNTRY 115 118    Italy
COUNTRY 116 124    Jamaica
COUNTRY 117 125    Jan Mayen
COUNTRY 118 122    Japan
COUNTRY 119 327    Jarvis Island
COUNTRY 120 328    Jersey
COUNTRY 121 127    Johnston Atoll
COUNTRY 122 126    Jordan
COUNTRY 123 137    Kazakhstan
COUNTRY 124 129    Kenya
COUNTRY 125 329    Kingman Reef
COUNTRY 126 133    Kiribati
COUNTRY 127 134    Korea
COUNTRY 128 136    Kuwait
COUNTRY 129 130    Kyrgyzstan
COUNTRY 130 138    Laos
COUNTRY 131 140    Latvia
COUNTRY 132 139    Lebanon
COUNTRY 135 146    Lesotho
COUNTRY 136 142    Liberia
COUNTRY 137 148    Libya
COUNTRY 138 145    Liechtenstein
COUNTRY 139 141    Lithuania
COUNTRY 140 147    Luxembourg
COUNTRY 141 151    Macau S.A.R.
COUNTRY 142 19618    Macedonia, Former Yugoslav Republic of
COUNTRY 143 149    Madagascar
COUNTRY 144 156    Malawi
COUNTRY 145 167    Malaysia
COUNTRY 146 165    Maldives
COUNTRY 147 157    Mali
COUNTRY 148 163    Malta
COUNTRY 149 15126    Man, Isle of
COUNTRY 150 199    Marshall Islands
COUNTRY 151 330    Martinique
COUNTRY 152 162    Mauritania
COUNTRY 153 160    Mauritius
COUNTRY 154 331    Mayotte
COUNTRY 155 166    Mexico
COUNTRY 156 80    Micronesia
COUNTRY 157 21242    Midway Islands
COUNTRY 158 152    Moldova
COUNTRY 159 158    Monaco
COUNTRY 160 154    Mongolia
COUNTRY 161 332    Montserrat
COUNTRY 162 159    Morocco
COUNTRY 163 168    Mozambique
COUNTRY 164 27    Myanmar
COUNTRY 165 254    Namibia
COUNTRY 166 180    Nauru
COUNTRY 167 178    Nepal
COUNTRY 168 333    Netherlands Antilles
COUNTRY 169 176    Netherlands, The
COUNTRY 170 334    New Caledonia
COUNTRY 171 183    New Zealand
COUNTRY 172 182    Nicaragua
COUNTRY 173 173    Niger
COUNTRY 174 175    Nigeria
COUNTRY 175 335    Niue
COUNTRY 176 336    Norfolk Island
COUNTRY 177 131    North Korea
COUNTRY 178 337    Northern Mariana Islands
COUNTRY 179 177    Norway
COUNTRY 180 164    Oman
COUNTRY 181 190    Pakistan
COUNTRY 182 195    Palau
COUNTRY 183 184    Palestinian Authority
COUNTRY 184 338    Palmyra Atoll
COUNTRY 185 192    Panama
COUNTRY 186 194    Papua New Guinea
COUNTRY 187 185    Paraguay
COUNTRY 188 187    Peru
COUNTRY 189 201    Philippines
COUNTRY 190 339    Pitcairn Islands
COUNTRY 191 191    Poland
COUNTRY 192 193    Portugal
COUNTRY 193 202    Puerto Rico
COUNTRY 194 197    Qatar
COUNTRY 195 198    Reunion
COUNTRY 196 200    Romania
COUNTRY 197 340    Rota Island
COUNTRY 198 203    Russia
COUNTRY 199 204    Rwanda
COUNTRY 200 341    Saipan
COUNTRY 201 259    Samoa
COUNTRY 202 214    San Marino
COUNTRY 203 233    São Tomé and Príncipe
COUNTRY 204 205    Saudi Arabia
COUNTRY 205 210    Senegal
COUNTRY 206 269    Serbia and Montenegro
COUNTRY 207 208    Seychelles
COUNTRY 208 213    Sierra Leone
COUNTRY 209 215    Singapore
COUNTRY 210 143    Slovakia
COUNTRY 211 212    Slovenia
COUNTRY 212 30    Solomon Islands
COUNTRY 213 216    Somalia
COUNTRY 214 209    South Africa
COUNTRY 215 342    South Georgia and the South Sandwich Islands
COUNTRY 216 217    Spain
COUNTRY 217 42    Sri Lanka
COUNTRY 218 343    St. Helena
COUNTRY 219 207    St. Kitts and Nevis
COUNTRY 220 218    St. Lucia
COUNTRY 221 206    St. Pierre and Miquelon
COUNTRY 222 248    St. Vincent and the Grenadines
COUNTRY 223 219    Sudan
COUNTRY 224 181    Suriname
COUNTRY 225 220    Svalbard
COUNTRY 226 260    Swaziland
COUNTRY 227 221    Sweden
COUNTRY 228 223    Switzerland
COUNTRY 229 222    Syria
COUNTRY 230 237    Taiwan
COUNTRY 231 228    Tajikistan
COUNTRY 232 239    Tanzania
COUNTRY 233 227    Thailand
COUNTRY 234 346    Tinian Island
COUNTRY 235 232    Togo
COUNTRY 236 347    Tokelau
COUNTRY 237 231    Tonga
COUNTRY 238 225    Trinidad and Tobago
COUNTRY 239 348    Tristan da Cunha
COUNTRY 240 234    Tunisia
COUNTRY 241 235    Turkey
COUNTRY 242 238    Turkmenistan
COUNTRY 243 349    Turks and Caicos Islands
COUNTRY 244 236    Tuvalu
COUNTRY 245 240    Uganda
COUNTRY 246 241    Ukraine
COUNTRY 247 224    United Arab Emirates
COUNTRY 248 242    United Kingdom
COUNTRY 249 244    United States
COUNTRY 250 246    Uruguay
COUNTRY 251 247    Uzbekistan
COUNTRY 252 174    Vanuatu
COUNTRY 253 253    Vatican City
COUNTRY 254 249    Venezuela
COUNTRY 255 251    Vietnam
COUNTRY 256 252    Virgin Islands
COUNTRY 257 351    Virgin Islands, British
COUNTRY 258 258    Wake Island
COUNTRY 259 352    Wallis and Futuna
COUNTRY 260 261    Yemen
COUNTRY 261 263    Zambia
COUNTRY 262 264    Zimbabwe

06 February 2013

MDT: Installing Windows 7 Updates as Packages

This is a really nice feature that MDT has allowing for all updates to be installed during the initial windows setup process. The problem is that certain updates will not install and cause the Install Updates function to fail, thereby halting the build. You will see the message Windows could not apply unattend settings during pass [offlineServicing]. The only way to resolve this is to remove the updates that caused it to halt.

The best way to locate the updates causing the problem is to create a structured package group. The way I setup my company's was to create the following structure:

  1. Windows 7 Updates
    1. Pre-Image Updates
      1. Non-Security Updates
        1. 2009
        2. 2011
        3. 2012
        4. 2013
      2. Optional Updates
      3. Security Updates
        1. 2010
        2. 2011
        3. 2012
    2. Post-Image Updates
      1. Non-Security Updates
      2. Optional Updates
      3. Security Updates

This gives an easy, sorted structure for the updates, which also allows you to find and remove those updates no longer needed after a service pack is installed. Plus, it allows you to activate/deactivate smaller sets of updates through the selection profile, thereby making narrowing down to the bad updates much easier. You might wonder where I got this structure. I use Windows Updates Downloader to download all of my windows updates and it uses this structure  I can verify that it works out great. This also allowed me to more easily find those updates that caused the build to crash during the offline installation. As far as associating them with a task sequence, all you have to do is check-mark each folder to be included in the selection profile, allowing all of the folders to be installed under a single task sequence. 

As far as the list of updates I found to halt the build of Windows 7 64-Bit with SP1, here it is:
  • KB2496898
  • KB2533552
  • KB2604521
  • KB2726535
Once I removed these updates, the offline update worked flawless. I did not bother trying to get these updates back in the system. I allow WSUS to install them.

01 February 2013

MDT: Injecting Variables into Task Names

While creating tasks in the task sequencing, you may want to create unique names that are stored in an MDT variable. This can easily be done. For instance, I have setup MDT to automatically install drivers by the make and model of the machine. I would like for it to also display which make it is installing it for. I went to the Inject Drivers task and added %Model% to the end of the Name field. It now displays the model it is installing the drivers for. Any variable that MDT uses can be entered into the Name field of a task sequence.