Jump to content




anyweb

how can I target applications to specific hardware



Recommended Posts

One of the big problems with deploying computers today is getting all drivers installed correctly, some drivers will install just fine using the standard PNP (plug and play) routines within Windows Setup providing of course that you have first added the drivers to driver packages and distributed them to your distribution point(s), some drivers however are not so easy to install and require an application to be run in order for the hardware to function, examples are Bluetooth, Wireless, 3G amonsgt others. These applications contain the drivers needed plus several support files/apps and what not.

 

Therefore you need to have a method of installing applications and in addition you need to be able to target what hardware these applications get installed onto (you don't want wireless drivers being pushed out onto a non-wireless desktop for example.

 

 

 

In the example below we will deploy an application called Quickset on a Dell Latitude D430, and I will quide you through the processes needed to get you there. Obviously you can replace the Hardware type with whatever model you are using and in addition you can use whatever application/driver you wish, the purpose of this guide is to show you how to target selected hardware

 

 

 

Get the Application

 

download the following file and run it on a test Dell computer, it will decompress the files to c:\dell\drivers\R180762, copy that folder and all files in it to your drivers share on your SCCM server (eg: \\servername\drivers\R180762)

 

2008-10-27 09:29 <DIR> .

2008-10-27 09:29 <DIR> ..

2008-02-22 17:04 8 413 184 QuickSet.msi

2007-08-08 16:10 8 544 readme.html

2008-02-22 16:49 230 680 Setup.exe

2008-05-21 20:24 688 Version.txt

 

Create a Package

 

Ok now that we have the files, and copied them to our SCCM drivers share, we need to create a package in SCCM, so open the Software Distribution node and expand Packages. Right click on Packages and choose New, Package.

 

new_package.jpg

 

When the Wizard appears fill in the general details

 

quickset_details.jpg

 

place a checkmark in this package contains source files and click on Set

 

set_source.jpg

 

fill in the path to where you copied the driver (a driver share on your SCCM server)

 

path.jpg

 

and place a checkmark in update distribution points on a schedule this will allow you to update versions of this application by simply copying the files to that folder...

 

data_source.jpg

 

click next and leave data access settings as they are

 

data_access.jpg

 

set the Distribution Settings to High for sending priority

 

distribution_settings.jpg

 

leave reporting and security as default

 

reporting.jpg

 

security.jpg

 

review the summary and verify all green ticks, then click close at the confirmation screen

 

confi.jpg

Share this post


Link to post
Share on other sites


Create a Program

 

ok now that we've created our package above, let's create a program (needed to install the application). Highlight the package, expand it and right-click on Programs, select New, Program.

 

new_program.jpg

 

when the wizard appears, type Applications for category type, fill in the other details and click browse

 

program_details.jpg

 

make sure to select file type to All files and then highlight quickset.msi and click open

 

open.jpg

 

then paste in the folllowing line

 

msiexec.exe /i "QuickSet.msi" /qn -silent REBOOT=ReallySuppress

 

and click next, the switches were taken from the README.HTML file provided with this application

 

switches.jpg

 

On the requirements screen we can decide how long this application is allowed to take to install and on what OS types it can be installed on

 

requirements.jpg

 

for Environment make sure that whether or not a user is logged on is highlighted from the choices available otherwise this will not work

 

environment.jpg

 

on the Advanced screen, also make sure that Allow this program to be installed from the Install software Task Sequence without being advertised is selected

 

advanced.jpg

 

for the Windows Installer and MOM Maintenance screens stay with the defaults,

 

windows_installer.jpg

 

moms.jpg

 

click next at the summary and close at the confirmation

confi.jpg

Share this post


Link to post
Share on other sites

Distribute the Package and update distribution points

 

Now that we have created our Package and created a program for it, we need to create a distribution point for it and then update that distribution point with the package. Right click on Distribution Points beside our newly created package and select New Distribution Points.

 

new_distr.jpg

 

click next when the Wizard appears and select the first distribution point (do not select the PXE DP as this is not a boot image....)

 

selected.jpg

 

click next and then close at the summary screen.

 

Now that we've created a Distribution Point let's Update it,

 

right click on our packages Distritbution Points and choose Update Distribution Points

 

update.jpg

 

answer Yes when prompted

 

yes.jpg

Share this post


Link to post
Share on other sites

Identify the hardware name in WMI

 

Now we need to query WMI to find out the hardware name (we'll need it for later).

 

Open a command prompt on your client hardware (the machines you intend to be deploying to....) and type

 

wmic

 

To find out the model name type this

 

CSProduct Get Name

 

The result is what we need

 

Below is a sample output from a Dell Optiplex 745

 

Microsoft Windows XP [Version 5.1.2600]

© Copyright 1985-2001 Microsoft Corp.

 

X:\>wmic

wmic:root\cli>CSProduct Get Name

Name

OptiPlex 745

 

wmic:root\cli>

Share this post


Link to post
Share on other sites

Edit the Task Sequence

 

Now we need to edit our Task Sequence to add the conditions necessary to selectively install applications/drivers, so expand the Operating system deployment node and expand Task Sequences and select a Task Sequence. Right click on it and choose Edit.

 

edit_ts.jpg

 

When the Task Sequence appears, highlight Setup windows and ConfigMgr and then click on the Add drop down menu

 

add.jpg

 

click on New Group from the choices

 

new_group.jpg

 

when the New Group appears, change it's name to Dell Latitude D430

 

 

Adding the WMI Query to detect our Model type

 

Now click on the Options Tab and then click on the Add Condition drop down menu, choose Query WMI

 

query_wmi.jpg

 

Paste the following code in to the WQL Query box

 

SELECT * FROM Win32_ComputerSystem WHERE Model Like "%Latitude D430%"

 

wmi.jpg

 

You can even test your query by clicking on the Test Query button (will return 1 if true, 0 if not)

 

Click on Ok and then click on the Properties Tab again.

 

 

Add the Quickset Application to the Task Sequence

 

click on the Add drop menu again, and choose General then Install Software

 

install_software.jpg

 

change the Name from Install software to Quickset and then click on the browse button

 

rename.jpg

 

select the Dell Quickset package from the list

 

select_package.jpg

 

... and click ok then apply

 

quickset_added.jpg

 

and that's it, you can now do a test deployment to see the Dell Quickset application installing itself on Dell Latitude D430's, once you've succeeded in the above you can broaden this further by installing applications like Intel Proset

Share this post


Link to post
Share on other sites

Dear anyweb,

 

I'm still new at this forum, and I'm kinda new at sccm to. For now i only tested on WDS with deployments.

 

My question is related to one of your posts about drivers to be included in the deployment.

 

 

QUOTE (anyweb @ Oct 27 2008, 02:40 PM)

post-1-1225116235_thumb.jpg

 

Paste the following code in to the WQL Query box

 

 

CODE

SELECT * FROM Win32_ComputerSystem WHERE Model Like "%Latitude D430%"

 

 

 

I would like to know if the query he runs is to automatically install this driver when deployment occurs. Or is this just so he only will give you the option to select the drivers which you need and can select them. I ask this question cause i wanna do the same like you did here, with the model name. But i would also wanna know if he knows the difference between operating systems. You need different drivers for xp and vista. And I wouldn't want him to install bad drivers on the wrong OS, if he automaticaly would select the drivers without askign an option or without knowing wich operation system it is. But like i said i'm still not entirely up and running with sccm. I'm still doing researches, before actually testing it in a virtual environment.

 

 

I hope to hear a reply soon from you and hope my question was clear enough for you.

Share this post


Link to post
Share on other sites

if you notice the WMI query takes place in a GROUP, and the reason for that is it 'asks' the machine what it is, and if it matches what we expect it to be, then and only then does it do all the individual STEPS within that group (quickset and whatever else you add), so if it is NOT a D430 then it will not install anything within the D430 group and it will skip the group completely and go to the next step in the task sequence.

 

I wouldn't mix operating systems types within a task sequence, that's just asking for trouble, it's probably possible but i wouldn't do it that way

 

i hope this helps

 

cheers

anyweb

Share this post


Link to post
Share on other sites

Well in the meantime i have been installing SCCM on a test server we have here. I configured everything but i seem to miss something important.

I'm guessing its the drivers.

 

I have added all drivers and put them into packages. The networkdrivers I added to the the boot image I use for x86. Also the script you shoed for wmi is configured but i don't get there yet to test it.

I have tried both for virtual pc (with the VM Drivers that are needed and for the pc i searched for the vista drivers)

 

Cause we boot up in WINPE, that is based on vista we need vista drivers. But I still get the same problem. Problem i'm getting is that it gets a dynamic ip, and it loads the windows file. Then windows is starting up and after preparing network connections its stays there doing nothing for a while and then just reboots. Ending in a loop :s

 

I'm wondering if I did something wrong or if you might know where the problem is.

 

Greetz

Share this post


Link to post
Share on other sites
Problem i'm getting is that it gets a dynamic ip, and it loads the windows file. Then windows is starting up and after preparing network connections its stays there doing nothing for a while and then just reboots. Ending in a loop :s

 

I'm wondering if I did something wrong or if you might know where the problem is.

 

Greetz

 

you'll need to review your SMSTS.log file to find out why

 

read this post for details of that http://www.windows-noob.com/forums/index.php?showtopic=546

Share this post


Link to post
Share on other sites

Anyweb,

 

Perhaps you know how to deploy multiple applications (software) in one task sequence working with variables?

If you would care to explain to the community?

Share this post


Link to post
Share on other sites

feel free to start a new topic explaining how you did it with screenshots :-)

Share this post


Link to post
Share on other sites

I'm doing this for a Lenovo ThinkCenter M58.

 

I had to use CSProduct Get Version to get "ThinkCenter M58".

 

Will this work the same as the previous SELECT statement?

SELECT * FROM Win32_ComputerSystem WHERE model Like "%ThinkCentre M58%"

 

Or, would I have to change a part of it?

Share this post


Link to post
Share on other sites

if you follow the guide above it will work so.........

 

open a command prompt as it says and type wmic

To find out the model name type this

 

CSProduct Get Name

 

 

 

The result is what we need

 

once you have the result you can do this

 

SELECT * FROM Win32_ComputerSystem WHERE model Like "%result%"

 

obviously replace result in the above with the answer you got back from the CSProduct Get Name test

Share this post


Link to post
Share on other sites

On this lenovo, using "Name" gave me the model number that is different, but for now, I only needed to know that it was a "M58", so I had to use "Version". Wierd, but the script used "Where Version".

 

It's working right now, but for some reason, it's taking a very long time to run my first driver install. It's just a Universal Audio Architect driver that runs "update.exe -s" and when I ran it, it ran very fast. I'd say it ran within a minute or two, but right now, it seems like I'm coming up on about 20 minutes or so.

 

It just finished and is continuing with the other installs. Those seem to go significantly faster. I'm confused.

Share this post


Link to post
Share on other sites

On this lenovo, using "Name" gave me the model number that is different, but for now, I only needed to know that it was a "M58", so I had to use "Version". Wierd, but the script used "Where Version".

 

It's working right now, but for some reason, it's taking a very long time to run my first driver install. It's just a Universal Audio Architect driver that runs "update.exe -s" and when I ran it, it ran very fast. I'd say it ran within a minute or two, but right now, it seems like I'm coming up on about 20 minutes or so.

 

It just finished and is continuing with the other installs. Those seem to go significantly faster. I'm confused.

 

 

Weird. After everything ran, the USB Keyboard and USB Mouse aren't functioning. I tried plugging in a PS/2 Mouse and it wouldn't work either.

Share this post


Link to post
Share on other sites

I'm doing this for a Lenovo ThinkCenter M58.

 

I had to use CSProduct Get Version to get "ThinkCenter M58".

 

Will this work the same as the previous SELECT statement?

SELECT * FROM Win32_ComputerSystem WHERE model Like "%ThinkCentre M58%"

 

Or, would I have to change a part of it?

 

I am currently using M58 and when I do a CSProduct Get Name for an M58 I get a 7373APU and 7360APU. Not ThinkCentre M58. CSProduct Get Name pulls the model name. Hope this helps.

Share this post


Link to post
Share on other sites

SELECT * FROM Win32_ComputerSystem WHERE Model Like "%Latitude D430%"

 

 

 

If I wanted to install a certain piece of software to all Latitudes would I simply take off the D430?

Share this post


Link to post
Share on other sites

indeed, try it !

 

SELECT * FROM Win32_ComputerSystem WHERE Model Like "%Latitude%"

Share this post


Link to post
Share on other sites

I had to use CSProduct Get Version to get "ThinkCenter M58".

 

Will this work the same as the previous SELECT statement?

SELECT * FROM Win32_ComputerSystem WHERE model Like "%ThinkCentre M58%"

 

Or, would I have to change a part of it?

 

 

I have the same problem. It looks like Lenovo does things a bit different. I cant do a query to cover all "ThinkPads", I have to know all product "types" such as 6463 for a T61. If there is another way, Im all ears.

Share this post


Link to post
Share on other sites

I have the same problem. It looks like Lenovo does things a bit different. I cant do a query to cover all "ThinkPads", I have to know all product "types" such as 6463 for a T61. If there is another way, Im all ears.

 

This query will target all thinkpad computers.

 

select *  from  SMS_R_System inner join SMS_G_System_COMPUTER_SYSTEM_PRODUCT on SMS_G_System_COMPUTER_SYSTEM_PRODUCT.ResourceID = SMS_R_System.ResourceId where SMS_G_System_COMPUTER_SYSTEM_PRODUCT.Version like "ThinkPad%"

 

enjoy :)

Share this post


Link to post
Share on other sites

This query will target all thinkpad computers.

 

select *  from  SMS_R_System inner join SMS_G_System_COMPUTER_SYSTEM_PRODUCT on SMS_G_System_COMPUTER_SYSTEM_PRODUCT.ResourceID = SMS_R_System.ResourceId where SMS_G_System_COMPUTER_SYSTEM_PRODUCT.Version like "ThinkPad%"

 

enjoy :)

 

 

Thanks!! Im a Noob, is it correct to assume that this cannot be used in a task sequence?

Share this post


Link to post
Share on other sites

Thanks!! Im a Noob, is it correct to assume that this cannot be used in a task sequence?

 

This query is used for creating collections or console queries.

If you wan´t to use it within a TS it will have to look a bit diffrent.

Share this post


Link to post
Share on other sites

This query is used for creating collections or console queries.

If you wan´t to use it within a TS it will have to look a bit diffrent.

 

 

Can you point me down a path?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×