locked
Install software if not already installed RRS feed

  • Question

  • Hi,

     

    The agent will install the software even if it is already installed. Software updates has the smarts to acknowledge if an update is already installed, but not software distribution...

    Is there an easy way for SCCM to check if a software is already installed, and not install in such case? I would still like for it  to report that it is installed. I thought of running a script before installing the software package, which could check a file or registry, but I'm not sure if I can prevent the program from installing.

     

    Any ideas? Just curious.

     

     

    thanks

    Monday, October 17, 2011 12:07 PM

Answers

  • You could use a tasksequence (yes, even outside OSD) that makes use of conditions for the "Install software" step.
    Alternative: use dynamic collections that do contain computers where software XYZ is not yet installed.
    Torsten Meringer | http://www.mssccmfaq.de
    • Proposed as answer by PaddyMaddy Monday, October 17, 2011 3:48 PM
    • Marked as answer by Sabrina Shen Thursday, October 20, 2011 4:10 AM
    Monday, October 17, 2011 12:11 PM
  • In the current version of the product there is no one ideal way of doing this (but 2012 should changes that) but a few options are
    1. A wrapper script that checks the install state of the software before executing the actual install command. This sounds similar to what you describe.
    2. Install the software as part of a Task Sequence, with a condition set to only execute when software is not installed. This can be done in a Task Sequence on the Install Software step, select the Options tab and add a condition If Statement ( None) and within this condition use either the Installed Software (if the install is MSI-based) or WMI Query condition
    3. Build the collection using data collected as part of Hardware inventory so only those machines without the software are targeted. You will need to use a sub-select query (example at http://myitforum.com/cs2/blogs/jgilbert/archive/2008/07/22/subselect-queries-the-easy-way.aspx )

    In my opinion all have some disadvantages; 1) obviously requires extra effort to write the script and (if you are using download and execute option) means you will download the entire package content even if the software is already installed. 2) is a popular choice but if you don’t use Task Sequences for software distribution this may be overkill and a Task Sequence cannot be chained back to other installs (unlike standard software packages) so they cannot be used as pre-requisite elsewhere. 3) Relies on possibly out-of-date inventory so it is not a real-time check (unlike option 1 and 2) and therefore possibly less reliable.

    • Proposed as answer by PaddyMaddy Monday, October 17, 2011 3:48 PM
    • Marked as answer by Sabrina Shen Thursday, October 20, 2011 4:10 AM
    Monday, October 17, 2011 12:34 PM

All replies

  • You could use a tasksequence (yes, even outside OSD) that makes use of conditions for the "Install software" step.
    Alternative: use dynamic collections that do contain computers where software XYZ is not yet installed.
    Torsten Meringer | http://www.mssccmfaq.de
    • Proposed as answer by PaddyMaddy Monday, October 17, 2011 3:48 PM
    • Marked as answer by Sabrina Shen Thursday, October 20, 2011 4:10 AM
    Monday, October 17, 2011 12:11 PM
  • In the current version of the product there is no one ideal way of doing this (but 2012 should changes that) but a few options are
    1. A wrapper script that checks the install state of the software before executing the actual install command. This sounds similar to what you describe.
    2. Install the software as part of a Task Sequence, with a condition set to only execute when software is not installed. This can be done in a Task Sequence on the Install Software step, select the Options tab and add a condition If Statement ( None) and within this condition use either the Installed Software (if the install is MSI-based) or WMI Query condition
    3. Build the collection using data collected as part of Hardware inventory so only those machines without the software are targeted. You will need to use a sub-select query (example at http://myitforum.com/cs2/blogs/jgilbert/archive/2008/07/22/subselect-queries-the-easy-way.aspx )

    In my opinion all have some disadvantages; 1) obviously requires extra effort to write the script and (if you are using download and execute option) means you will download the entire package content even if the software is already installed. 2) is a popular choice but if you don’t use Task Sequences for software distribution this may be overkill and a Task Sequence cannot be chained back to other installs (unlike standard software packages) so they cannot be used as pre-requisite elsewhere. 3) Relies on possibly out-of-date inventory so it is not a real-time check (unlike option 1 and 2) and therefore possibly less reliable.

    • Proposed as answer by PaddyMaddy Monday, October 17, 2011 3:48 PM
    • Marked as answer by Sabrina Shen Thursday, October 20, 2011 4:10 AM
    Monday, October 17, 2011 12:34 PM