edwgon

This user hasn't shared any biographical information

Homepage: https://mytechstuffdotinfo.wordpress.com

Deploy Adobe Acrobat Reader XI (11.0.03) Using SCCM 2012 SP1

There are several blogs on this topic; however, some seem to be lacking one or more details or may not show how to patch and customize Adobe Acrobat Reader XI. In this blog, I will show you how to patch, customize and deploy, via SCCM, Adobe Reader XI (11.0.03).

Pre-requisite: Make sure you have installed Adobe Customization Wizard XI

  1. Download the latest version of Acrobat Reader from Adobe’s FTP site.
    1. The direct FTP link is: ftp://ftp.adobe.com/pub/adobe/reader/win/11.x/11.0.03/en_US/
  2. We’re going to download the EXE file: AdbeRdr11003_en_US.exe
  3. Next, from an administrator command line, we’re going to extract the MSI from the EXE file using the following command: AdbeRdr11003_en_US.exe -nos_o”c:\SomeDirectory” -nos_ne
    1. Do not close this command line window as we’ll use it again.
    2. For this example I’m extracting the contents to C:\temp\Adobe XI (11.0.03) folder.

  4. Once we’ve extracted the source files from the EXE file, then let’s run (as an administrator) the Adobe Customization Wizard XI to create the MST file that we’re going to use to customize Adobe Reader XI.
    1. If the customization wizard isn’t run as an administrator, you won’t be able to save the package.
  5. Basically, we’re going to make changes in the the following sections:
    1. Personalization Options
    2. Installation Options
    3. Shortcuts
    4. WebMail Profiles
    5. Online and Adobe online services Features

  6. Once the customization options have been completed, proceed to click on Transform menu option then click on Generate Transform…
    1. Save the MST file in the same folder where the Adobe Reader MSI exists.
    2. For this example, we’re going to save this file as AcroRead.mst
  7. Next, click on File and then click on Save Package.
  8. Back to the command line and let’s create an Application Installation Point (AIP) in order to patch Acrobat Reader.
    1. In the folder where the MSI file was extracted, you’ll notice that file AdbeRdrUpd11003.msp is located there – that’s our patch file that we’ll be applying.
    2. For this example we’re going to create a new folder – C:\AdobeAIP
  9. From the command line, in step 3, we’re going to create the AIP with the following command: msiexec /a AcroRead.msi
    1. Once the wizard comes up, make sure to point it to the folder created in step 8.2
    2. Make sure you run this command from the folder in step 3.
    3. Take a look at the files extracted
  10. Change directory to folder C:\AdobeAIP
  11. Now we’re ready to patch the Acrobat Reader source files, let’s use the following command: msiexec /a AcroRead.msi /p “c:\temp\Adobe XI (11.0.03)\AdbeRdrUpd11003.msp”
    1. This will open a wizard window; make sure there are no error messages during this task.

  12. If the patching process was successful, then we should now have a patched Acrobat Reader XI installation as well as a customization file.
  13. From Step 3 folder (C:\temp\Adobe XI (11.0.03)), copy the MST file to the Step 6 folder (C:\AdobeAIP)
  14. At this time, folder C:\AdobeAIP should contain a patched Acrobat Reader  XI as well as the customization file. We’re going to use the contents of folder C:\AdobeAIP as our deployment files to create our SCCM 2012 deployment package.
  15. Copy all contents of C:\AdobeAIP to the share that SCCM uses to deploy applications in your environment.
  16. Let’s create a new application deployment package in SCCM. First, go to the Software Library section, and click on Application Management and then click on the Applications container to create the new package.
  17. Right click on the Applications container then click on Create Application option.
  18. Point to the network share where you copied the files in Step 15 and select the file AcroRead.msi
    1. You may get a warning message about not being able to verify the publisher of this MSI file, just click on Yes.
  19. In the General Information wizard screen, in the Installation program field, add the following:TRANSFORMS=”AcroRead.mst”
    1. This line should read: msiexec /i “AcroRead.msi” TRANSFORMS=”AcroRead.mst” /q

  20. Continue accepting defaults until the application wizard finishes.
  21. Now, you can deploy this new application to a selected number of computers or users.


Supersedence Notes
In my environment, I’m replacing, or superseding, and older version of Adobe Acrobat Reader. Here’s a quick screenshot on how it’s done.


36 Comments

A disk controller driver nightmare from hell!!

Recently we started the deployment of Windows 7 Enterprise (x64) throughout the company that I work for. The targeted hardware were DELL Optiplex 980, 990 and 9010 model desktops. The nightmare began after deploying several Optiplex 990 models. We use Microsoft System Center Configuration Manager 2012 SP1 to deploy the OS and applications to these desktops.

After deploying over 20 Optiplex 990 models, we noticed that on some 990s we were getting continuous BSOD’s after a day or two (the BSOD’s also came after a week of having the computer in production!). After a desperate call to Microsoft, it was determined that the BSOD code was a generic hardware error code. However, Microsoft was unable to pin-point the issue after 3 weeks of troubleshooting!

The one thing that came to mind was that the recent models that I deployed were older model Optiplex 990 desktops (possibly 2012 and very early 2013 models) , but at that time I failed to look into this clue. Luckily, and I mean luckily, I was able to catch the culprit of this nightmare, and here are the screenshots.


Note: disregard the failed PCI driver controller installation


Basically, you’re looking at a hijacked SATA driver installation!

These DELL Optiplex 990 models come with a SATA drive and controller installed. As a matter of fact, when Windows 7 Enterprise gets installed, SATA drivers are loaded for this computer; however, sometime post installation Windows finds, or detects, an IDE ATA chipset and without any warning, it installs the Intel(R 6 Series/C200 Series Chipset drivers!

To make matters worst, I’ve configured the OS Deployment in SCCM to use native DELL drivers specific for this computer model, yet Windows Updates comes a day or two later and replaces them with the Intel(R 6 Series/C200 Series Chipset drivers.

The quick, and lazy fix, is to go to the BIOS and change the drive controller settings from Raid On (default setting) to ATA.

I’ve yet to identify the reason why this change in disk controller drivers.

1 Comment

Identify Drivers Loading During Windows 7 Boot Process

This article is somewhat not complete, and it may contain some incorrect definitions, but it’s out there mainly for reference. Updates coming soon!


  1. Open Regedit and go to HKLM
  2. Expand HKLM\Select and look at the value of Current key
  3. Based on the value of Current key (1, 2 or 3), select the proper HKLM\System\ControlSet00x
  4. Expand HKLM\System\ControlSet00x\Control\Class
  5. Under Class you’ll get a list of drivers that load during the boot process of Windows 7
  6. In each driver entry, under the Class folder, look for the following keys: LowerFilters and UpperFilters – these are some of the drivers that load during the boot process


Leave a comment

SCCM 2012 and Microsoft App-V Client 4.6 SP1

Believe it or not I had such a hard time creating a SCCM 2012 packaged application for Microsoft App-V Client 4.6 SP1.

I found several promising links on this topic, but none went to the point or explained the process from start to finish. After researching this process, it looks like you can use the EXE or the MSI to create the packaged application.
The MSI way is supposed to be the desired way, and what most people recommend. However, not everything works as people document it, and certainly it didn’t work for me after several days of working on this.

Note: The main issue I had with the MSI installation was due to the VC++ 2005 Redistributable requirement. Although I was able to extract the VC++ 2005 MSI, and I was able to properly install it, somehow the setup.msi file would not recognize it as installed in the system! I spent way too many hours troubleshooting this issue and in the end, my productivity had slowed down due to this problem, so it was time for me to move on.

In the end, I opted for using the easier way – the EXE setup file. Using setup.exe takes care of all requirements for you, no need to create separate packages for them. Microsoft instructions on how to perform a silent install using the EXE file is found here. The documentation on what each installation paramater mean, is found here.

First off, I do not use an App-v publishing server, so make sure you read Microsoft’s information about installation parameters!

Here we go:

  1. The installation command line I use is: setup.exe /s /v”/qb-! SWICACHESIZE=\”6144\”
  2. The detection methods I use are based on registry keys: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\sftmime.com
  3. The other detection method I use is: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\sftmime.exe
Here are some screenshots:


This method has worked flawlessly in our environment, and I hope this helps someone out there.

Leave a comment

Use the asset tag on a DELL Latitude E6500 as the computer name

Background

So I ran into an interesting bug with our DELL Latitude E6500 models and Microsoft’s SCCM 2012.

First off, in our environment we use the BIOS service tag information on all our DELL devices as the computer name in Windows 7. I’m able to get this information during the Task Sequence (TS) by means of using a VB script.

The script I mention above works on all our DELL computer and laptop models, with the exception of the DELL Latitude E6500 laptop models.

The Bug

On a DELL Latitude E6500, with the BIOS updated to the latest version, it looks like the BIOS asset tag information is somewhat misleading. If you view the information, you’ll see the asset tag information, but what you don’t see are the trailing spaces after the asset tag information. For instance, if the BIOS asset tag information on a laptop reads X1234, there are 5 trailing spaces after it, and these white spaces do not show!

Note: We use a tool called asset.exe, from DELL, to modify the asset information and the owner information in the BIOS. This tool works well on many of DELL computers and laptops.

SCCM 2012 and The Bug

During a SCCM Task Sequence (TS) job, we collect the asset information and we use this information as the Windows 7 computer account. The TS works perfectly until the last step: Setup is applying system settings – at this point, the TS fails with the message: Windows could not parse or process the unattend answer file for pass [specialize]


The TS fails completely and you’re left with a computer whose OS isn’t working.

SCCM logs give a hint on what went wrong. In case you don’t know, those logs can be retrieved from the broken machine and the logs (setupact.log and setuperr.log) are located at: C:\Windows\Panther\UnattendGC
In our case, both files showed the following error message:

2013-02-27 15:35:17, Error     [Shell Unattend] ComputerName: failed to set the computer name [hr=0x80070057][gle=0x00000057]
2013-02-27 15:42:30, Error    [windeploy.exe] Setup.exe failed, returning exit code [0x1f]
2013-02-27 15:42:30, Error     [windeploy.exe] Failure occured during online installation.  Online installation cannot complete at this time.; hr = 0x80004005
2013-02-27 15:43:42, Error     [windeploy.exe] Setup.exe failed, returning exit code [0x1f]
2013-02-27 15:43:42, Error     [windeploy.exe] Failure occured during online installation.  Online installation cannot complete at this time.; hr = 0x80004005


After reviewing this log, this pointed me to the VB script mentioned earlier and to the BIOS asset tag information. I knew the script was working properly, so I turned my attention to the BIOS asset tag information.
After several hours of toying around with asset.exe, I realized that there were blank spaces after the asset tag information – 5 spaces in total!

The Workaround (not a fix)

Basically, I used asset.exe and deleted the current asset tag and re-typed it, but this time I added 5 letters to the end. In other words, my command line looked like this:

asset.exe X1234ABCDE

X1234 is the asset tag information (a.k.a my Windows 7 computer name); however, ABCDE is the workaround to make sure those blank spaces don’t break the TS.

After the TS finished, then I logged on as a local administrator and renamed the computer name to X1234 – life is good again!

Note: During this entire troubleshooting process we updated the laptop BIOS, and this didn’t seem to fix the issue.

I hope this helps someone out there.

Leave a comment

Enable Wake-On-LAN via CLI

The following will allow you to enable Wake-On-LAN for your network card interface. I’ve only test this on a Windows 7 system, and it’s been working properly in my environment.

By default, my systems have the following configuration:



After running the script, this is how it should look like:



Here’s the code, just copy the code and save with either a .BAT or .CMD extension.

@ECHO OFF
REM ********************************
REM ***** DESCRIPTION **************
REM ********************************
REM ***** Identify network card and write its name
REM ***** to file C:\Users\Default\AppData\Local\Temp\adapters.txt
REM ***** Name of network card is based on the following
REM ***** keywords: gigabit network connection ethernet
REM ********************************
REM ***** PARAMETERS BREAKDOWN *****
REM ********************************
REM ***** POWERCFG
REM ***** -devicequery Return a list of devices that meet the specified criteria
REM ***** wake_from_any Return all devices that support waking the system from any sleep state.
REM ********************************
REM ***** FINDSTR
REM ***** /I (or /i) Specifies that the search is not to be case-sensitive
REM ********************************
REM ***** Note: this is one long command line (word wrapping may show it as two lines)
POWERCFG -devicequery wake_from_any | FINDSTR /i "gigabit network connection ethernet" > C:\Users\Default\AppData\Local\Temp\adapters.txt

REM ********************************
REM ***** DESCRIPTION **************
REM ********************************
REM ***** Enable WoL on device with the following
rem ***** keywords in its name: gigabit network connection ethernet
REM ********************************
REM ***** PARAMETERS BREAKDOWN *****
REM ********************************
REM ***** POWERCFG
REM ***** -deviceenablewake Enable the device to wake the system from a sleep state
REM ********************************
FOR /F "tokens=*" %%i IN (C:\Users\Default\AppData\Local\Temp\adapters.txt) DO POWERCFG -deviceenablewake "%%i"

Leave a comment

From a GUID to its GPO name.

Numerous times I had the issue, when troubleshooting a group policy object error, in which I only had the GPO’s GUID, but not its actual name. Well, it turns out that there is a powershell applet that performs a search in AD, using the GUID, and it returns the GPO’s full description for you.

  1. Open Widnows PowerShell Modules
  2. Type: get-gpo
  3. Paste that GUID and press ENTER


Leave a comment

SCCM 2012 – Software Center Options

The original information came from this source, I’m just adding a few more screenshots for my benefit.

The following script will allow you to change a particular setting found in SCCM 2012’s Software Center.

In Software Center, under the Options tab, and under the Computer maintenance heading, there is a setting – Automatically install or uninstall required software and restart the computer only outside of the specified business hours – that can be set to True (checked) or False (unchecked) by using this script.
2016-10-21_1506
Use the following code to obtain the current status of the option. This code you’ll use as the Discovery script.
$getStatus = Invoke-WmiMethod -Namespace "Root\ccm\ClientSDK" -Class CCM_ClientUXSettings -Name GetAutoInstallRequiredSoftwaretoNonBusinessHours -ComputerName $env:ComputerName -ErrorAction STOP

If ($getStatus.AutomaticallyInstallSoftware -eq "True")
{
Write-Host "Compliant"
}
Else
{
Write-Host "Non-Compliant"
}
Here’s how you’ll add this code to a Configuration Items object.
 discovery
Next, we’ll need to add the code to make the change or Remediation script
Invoke-WmiMethod -Namespace “Root\ccm\ClientSDK” -Class CCM_ClientUXSettings -Name SetAutoInstallRequiredSoftwaretoNonBusinessHours -ArgumentList @($TRUE) -ComputerName $env:ComputerName -ErrorAction STOP
Here’s how you’ll add this code to a Configuration Items object.
remediation
Next, we need to configure a Compliance Rule for the Configuration Item.
compliance
Now, as the final portion, we need to create a Configuration Baseline based on the Configuration Item created here and then deploy the Configuration Baseline.

2 Comments

Wake-on-Lan (WoL) with DELL Optiplex

We wanted to get Wake-on-Lan (WoL) to work on our DELL Optiplex 990 desktops with Windows 7.


Here’s how we got this work in our environment. (Make sure your DELL computers are running the latest BIOS version.)

Enable BIOS settings:
  1. Under Power Management
    1. Enable – Wake on Lan ( LAN Only )
      1. This one is needed for Windows 7 and to allow the machine to be woken up from a sleep state
    2. Disable – Deep Sleep Control
      1. This one is needed to allow to boot up the machine when the machine has been shutdown

Enable Windows 7 settings:
  1. Go to Window’s Device Manager
  2. Go to the properties for your primary network card
  3. Go to the Power Management tab
  4. Click to enable Allow this device to wake the computer
Note: Make sure you create an incoming rule in Windows 7 firewall to allow some of the WoL testing tools to run properly.

Network settings:

  1. If you’re working on a large network, then make sure your network team adds ip directed-broadcast on the router/switch interface where you’ll be sending WoL packets.
We now have all the settings necessary to get WoL working.

To test these settings, you can use the following tools:

Wake-on-LAN monitor/sniffer – great tool! (See Windows 7 settings note)

Wake-on-LAN magic packet sender tool

3 Comments

Deploy Pervasive SQL v10 SP3 Using SCCM 2012

Here are the steps to deploy Pervasive SQL v10 SP3 client to your Windows 7 machines using Microsoft’s SCCM 2012.

  1. Create an application package, and you’re going to use SetupWorkgroup_x86.exe
  2. Use the following installation parameters: SetupWorkgroup_x86 /s /v/qn
    1. Type it as shown above. There is no space in /v/qn
  3. For the Uninstall program, look at the screenshot below. You can leave it blank for now, but go back and the proper information once the wizard is complete.
  4. In the Detection Method section, you’re going to look for the MSI file PervasivePSQLv10WGE_x86.msi; this file is also located in the same folder as the setup file in step 1.
These steps worked in my environment.


Leave a comment