Jump to content


pxedave

"Devices with Application" count for many applications is far too low

Recommended Posts

Folks,

 

Today we noticed that the "devices with application" statistic against many of our packages looks far too low. The example application I'm currently looking at has been in our base OSD task sequence for some time and yet devices even recent devices are not showing up in this count. (I'm using an SMS_G_System_AppClientState.ComplianceState / SMS_G_System_AppClientState.AppName query to see a list of devices with this app). I'm expecting to see thousands of devices as having this application and yet only 1,300 are showing in the console / this query. The detection method of this app is just an MSI code and it's definitely present on devices not in the count. The MSI code is also present in Resource Explorer for these devices.

 

Any ideas?

Share this post


Link to post
Share on other sites

Further to this, I just deployed the example app to the device (Available) and the local AppDiscovery.log sees that the detection method is already present on the device... so what could be stopping the device from being included in the "Devices with Application" count/query?

 

+++ Discovered MSI application [AppDT Id: ScopeId_E158B7D5-98D9-4669-A16D-FBF03B8FA92B/DeploymentType_7fff4bcb-a967-45d1-a63c-f91c0973741e, Revision: 2, MSI Product code: {743BBC0D-B119-4175-9EAC-555AD23BD582}, MSI Product version: ] AppDiscovery 17/05/2016 15:11:42 6460 (0x193C)

Share this post


Link to post
Share on other sites

Interestingly, the above device is now in the list when I run the query... all I did was deploy the application to it "Available" and let it detect that the package is there. It's as though there's a risk that the device isn't being counted as having an application unless the software is actually specifically being deployed to it outside of a task sequence? But some of our applications that haven't been deployed outside of the TS show a correct count. Strange...

Share this post


Link to post
Share on other sites

You are correct. That count will only increase if the application has been deployed to it. If the application already exists on machine (but the application wasnt deployed) it wont be included in the count until you actually deploy it. Sccm must query and see the app as being installed before its included in the count.

Share this post


Link to post
Share on other sites

Hmmm. What I really want is for the software to be detected and automatically uninstalled if the device isn't in the install collection. I was thinking just deploying an uninstall to a collection that is based on the above query (and is set to exclude the install collection) would do it but this wouldn't cater for applications that are installed manually i.e. not deployed, correct? If so, would a logical solution be to deploy an uninstall of everything to everything knowing this will force the client to check for every application regularly (I'm assuming that's what would happen) and that the install will overrule the uninstall? Any thoughts? Right now I'm wondering if my original plan to make my uninstall queries based on hw/sw inventory (on an exe in the package etc) rather than using SMS_G_System_AppClientState is more efficient...

Share this post


Link to post
Share on other sites

We are deploying 600 applications to device collections, one per app. We want sccm to automatically uninstall applications if they're not being deployed to them regardless of how they got there... I remember reading that an install takes precedence over an uninstall so rather than have 600 uninstall collections/queries I should just permanently deploy an uninstall of everything to All Systems and the install deployments should overrule until a device is removed from a collection? I'm guessing the downside is that we'll briefly see hundreds of uninstalls in Software Centre / always see every uninstall deployed against every device in the console. PS. Another downside is that if EVER the install deployment is deleted but the uninstall deployment is accidentally left behind, you'll automatically uninstall software from everywhere = not good.

Share this post


Link to post
Share on other sites

You're right in saying that could go horribly wrong if the install was deleted and the uninstall wasnt.

 

Why not do something like this:

 

Collection A - Install (add all the machines you need software deployed to here and deploy the install)

 

Collection B - Uninstall (this collection will contain all system but EXCLUDE Collection A - deploy the uninstall here)

 

 

Example:

 

You have a sccm site consisting of 20 machines

 

Adobe Flash - Install (10 members)

Adobe Flash - Uninstall (add the "Adobe Flash - Install" as a exclude rule and then just include the "all systems" collection (or whatever you feel is best)). Then deploy the uninstaller here.

 

Any members of "Adobe Flash - Install" will get the software installed.

Any members of "Adobe Flash - Uninstall" will get the software uninstalled

One day you decide to remove 5 machines from "Adobe Flash - Install", this will mean they then end up in "Adobe Flash - Uninstall" as they are no longer members of the collection that was excluded

 

Mind you, im sure there are better ways of doing this. I have setup a auto-uninstall mechanism however that's for licensed software and we are using metering. Anyone who hasn't used software "X" in 90 days will get it auto uninstalled.

Share this post


Link to post
Share on other sites

You're right in saying that could go horribly wrong if the install was deleted and the uninstall wasnt.

 

Why not do something like this:

 

Collection A - Install (add all the machines you need software deployed to here and deploy the install)

 

Collection B - Uninstall (this collection will contain all system but EXCLUDE Collection A - deploy the uninstall here)

 

 

Example:

 

You have a sccm site consisting of 20 machines

 

Adobe Flash - Install (10 members)

Adobe Flash - Uninstall (add the "Adobe Flash - Install" as a exclude rule and then just include the "all systems" collection (or whatever you feel is best)). Then deploy the uninstaller here.

 

Any members of "Adobe Flash - Install" will get the software installed.

Any members of "Adobe Flash - Uninstall" will get the software uninstalled

One day you decide to remove 5 machines from "Adobe Flash - Install", this will mean they then end up in "Adobe Flash - Uninstall" as they are no longer members of the collection that was excluded

 

Mind you, im sure there are better ways of doing this. I have setup a auto-uninstall mechanism however that's for licensed software and we are using metering. Anyone who hasn't used software "X" in 90 days will get it auto uninstalled.

 

Hey, thanks for your suggestion. You're right. That would work and is slightly more transparent than simply deploying the uninstall to All Systems and letting the client fight it out. However, talking to a pal in another organisation who went down the same route, they moved away from it because deployment stats against every client showed 600+ permanent uninstalls alongside installs plus the extra unnecessary load on every client. Plus, that very real risk of an accidental site-wide uninstall.

 

For now, we are going to include a custom Exe in every package with a standard naming convention (Manufacturer_Product_version_pkgversion.exe) and base our uninstall collections on these exes (whilst, as you suggest, excluding the install collection). This will also allow us to report on where our packages are installed more reliably than the SMS_G_System_AppClientState query, which, as you said, only returns where products were deployed, not where packages actually are...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...


×
×
  • Create New...