Any application I create in SCCM, if the deployment is set to available it does not detect if the software is already installed on a device. As a result users think that a new piece of software is available when it is already installed on their PC.
This is not the case if the deployment is set to required. If it is set to required it will move the application to "Installed" if it was installed prior.