SOLVED

Detection Method Query

Copper Contributor

Hi,

I have a scenario. I am installing an SCCM Application.

1) I have installed Firefox 1.0 on my machine.

2) On top of it, I have installed Firefox 2.0 ( No Supersedence used, Firefox 2.0 has internal logic to uninstall Firefox 1.0).

3) So after sometime, I found Firefox 1.0 getting installed back on my machine and sitting together with Firefox 2.0.

 

I was puzzled how it got re-installed. I had checked the AppDicovery.log and found below,

SCCM was checking the detection method and found Firefox 1.0 missing from the machine so it brought back the Firefox 1.0.

1) Does it mean I cannot use internal logic to uninstall previous versions ?

2) Let us suppose an Application has detection method to check file existence, C:\temp\A.txt.

If user accidentally deletes this file, will the whole application re-install on the user machine ?

 

Please advise.

11 Replies

@arjun_padanakandy89 if you detection logic is to look for a file then if you delete the file, yes it will try to reinstall. 

best response confirmed by arjun_padanakandy89 (Copper Contributor)
Solution

@arjun_padanakandy89 

 

As Garth said, when the appintenteval runs, and it finds a required deployment is no longer installed, it will automatically run the install program for that application.  
That said, if you're not using Supersedence, then I'm assuming you still have Firefox v1 deployed as required.  You should remove that required deployment so it doesn't try to reinstall.

So from uninstallation of previous packages point of view, we have only two options ?
1) Use only Supersedence for uninstalling any previous versions.
2) Or if we use any scripts to uninstall then we will need to remove the deployment of old packages, this will prevent it from re-installing.
Please correct me if I go wrong.
Thank you for your response.

Also I observed something. Adding to your reply. I have modified some files of the Application and also changed the Detection logic (I am updating the same Application) and clicked on Update Content.

Now the revised Application is found auto-installed on the machine.

How to ensure the Application is not re-installed automatically ?


@arjun_padanakandy89 A third option would be to create a detection method that is also satisfied for newer versions of the same product. This mechanism is used in the default application deployment types for Microsoft Edge and Microsoft Office 365. Basically, we check for the product version as written in the registry to be greater than or equal to the version we're deploying. That way, the deployment is still considered compliant, even if the built-in application update mechanism has updated the application to a newer version.

If you change the detection method for a deployment type in an application that's deployed as Required, clients targeted by that deployment will use the revised detection method. If the new detection rule isn't satisfied, that will trigger a re-install.

@Michiel Overweel  Thank you for the reply. We have a huge User base in our organization.

Once an Application is created, we do some User acceptance testing (on 1-2 devices) before deploying on the wide user base. So if I make any changes to the Application I will not be able to perform any User acceptance testing, it will be directly deployed onto User machines targeted by the deployment.

Can you advise how can we handle this scenario ?

@arjun_padanakandy89 I may be misunderstanding your question, but I don't see a problem in the scenario you're describing. Initially, you should deploy the new application to a collection containing the test users or devices only, either as Required or as Available. This allows the test users to perform their acceptance testing, and it allows you to make changes to the application without affecting anyone except the test users. Once you're satisfied that the application works as intended, you can deploy it to the production collection(s).

@Michiel Overweel 

We are almost there on the same page. So yes, my Application is on the Production Collection now.

Let us suppose the Vendor comes back with a fix/patch after a week.  And we as a part of Packaging team are asked to make the new changes in the same Application and Update the Content.
So I have created a new deployment type for Fix, with a detection method, which will install only if Base Application is present.

So now that I have made the changes, I will deploy the Application on test collection for acceptance tests.

This is where I observed, all the users in Production collection also received the updated content.
As I mentioned earlier, we have a long list of Collection for respective regions across the globe. Do you suggest to remove the Collection as soon as the Application installs ? And is this scenario only for Applications and not for packages ?







@arjun_padanakandy89 First of all, I would never create a new Deployment Type to install an update for an existing application. That's not what DT's are intended for. What I would do is either:

  • Remove the production application deployment temporarily, add the fix, update the detection method, go through the user acceptance test process again and then deploy it to the production collection again, or:
  • Create a new application object that includes the fix, make it Supersede the original application and treat it like you treat any new application (i.e. follow the test and production deployment process as described before).

I would definitely recommend the second scenario; much simpler to implement and maintain.

Thank you, that answers my query.
1 best response

Accepted Solutions
best response confirmed by arjun_padanakandy89 (Copper Contributor)
Solution

@arjun_padanakandy89 

 

As Garth said, when the appintenteval runs, and it finds a required deployment is no longer installed, it will automatically run the install program for that application.  
That said, if you're not using Supersedence, then I'm assuming you still have Firefox v1 deployed as required.  You should remove that required deployment so it doesn't try to reinstall.

View solution in original post