Nudge (macOS Updates)

ImAMacGuy
Valued Contributor II

I've been following @erikgmez 's Nudge app for macOS 11 for a while now, and I'm finally trying to jump in to it.

There seems to be a lot of configuration options but they all seem pretty similar to me when reading the wiki

I tried running it just with defaults and it made the nudge window active constantly... what settings are recommended to kind of tone down the aggressiveness of behavior? Our patches prior to macOS 11 would run once a day and prompt to install or defer. In hindsight that seems not aggressive enough, so maybe every couple hours? I'm open to suggestions, but with all the different timer options I'm getting a little lost and confused.

45 REPLIES 45

rickwhois
Contributor

I use a launchagent that tells nudge to run every 3 hours (or 10800 seconds)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.github.macadmins.Nudge</string>
    <key>LimitLoadToSessionType</key>
    <array>
        <string>Aqua</string>
    </array>
    <key>ProgramArguments</key>
    <array>
        <string>/Applications/Utilities/Nudge.app/Contents/MacOS/Nudge</string>
        <!-- <string>-json-url</string> -->
        <!-- <string>https://raw.githubusercontent.com/macadmins/nudge/main/Nudge/example.json</string> -->
        <!-- <string>-demo-mode</string> -->
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>10800</integer>
</dict>
</plist>

did you deploy the nudge launch agent with this script together? 

WaqasKhan
New Contributor II

Are you guys seeing different behavior/result using config profile vs. json ?
I'm not seeing consistent behavior using config profile. Preference domain is set to com.github.macadmins.Nudge and I have requiredMinimumOSVersion key set to 11.4.0. Not being prompted every hour, with the default LaunchAgent.

Any suggestions?

mainelysteve
Valued Contributor II

@WaqasKhan I did see some inconsistencies with it still displaying even though I had the "don't display until downloaded" key set. What you're seeing may be down to your min version number choice. Since 11.4 isn't a production release it may balk at that. Someone correct me if I'm wrong, but that seems like a plausible cause. Try setting it to 11.3.1.

rickwhois
Contributor

@WaqasKhan I'm using json, just so ease of use when modifying for new os releases. There is another parameter you may need to change and that is targetedOSVersion. If your test machine is running 11.3.1 than that targetedOSVersion would need to be scoped to that version.

@rickwhois How do you go about installing the JSON with your desired settings to the client device?  I see it is supposed to be stored at  /Library/Preferences/com.github.macadmins.Nudge.json.  I don't see in the setup how it gets pushed to the device.

WaqasKhan
New Contributor II

To apply customized settings, are you using Application and Custom Settings --> External Application --> Source --> Custom Schema and uploading the customized json file ?

I must be doing something wrong because I can't get the application to Jamf deployed configuration either via plist or json.
It works as expected if I manually add the plist or json to /Library/Preferences.

rickwhois
Contributor

@WaqasKhan yes. the source is custom schema and the preference domain is com.github.macadmins.Nudge

below is a link to the schema at the nudge repo
https://github.com/macadmins/nudge/tree/main/Schema/jamf

WaqasKhan
New Contributor II

@rickwhois = #timesaverextraordinaire

Much appreciate.

Joostvantwout
New Contributor III

@rickwhois Maybe a stupid question but when I deploy this scheme via custom schema and the preference domain is com.github.macadmins.Nudge and I try to change the right side text for the Nudge screen it doesn't change anything. Any idea's?
Further I just deploy a launchagent and the Nudge PKG version 1.0.1.06092021201805.

rickwhois
Contributor

@Joostvantwout Are you testing this in demo mode? that wont show you the changes. When I test, I usual scope a test config to just my test machine and make sure the targetosversion of my test machine is in the test config, and then make sure the requiredminimumosversion is newer than whats on the test mac. It should pop up on its own, but you can run it from terminal /Applications/Utilities/Nudge.app/Contents/MacOS/Nudge

The nudge repo is very thorough as well if your looking to make other changes! https://github.com/macadmins/nudge Hope this helps!

Joostvantwout
New Contributor III

@rickwhois No I'm not testing in Demo mode, testing with launchagent nudge package config profile, Nudge is showing up every 30 minutes like it's supposed to be, requiredminimumosversion is also showing as expected only the "Update device" button doesn't change. I want to change the context of the button as our company needs but looks like it doesn't come through.

Is there maybe a good order to deploy nudge? Maybe first the package then the config or other way around?

I have this same issue. Using the JSON info in a Jamf Configuration profile. The More Info link to uRL and simple vs regular changes in the Config profile takes on the laptop with Nudge. The Text I edit under "user element" does not reflect the changes made via the JSON config profile. The profile on the computer shows the edited text but Nudge itself does not show the correct text.

Mitch260488
New Contributor II

Hey I have the same issue here. Did you find a fix for this?

Credit to @fridomac - discovered I was missing the ‘en’ in the preferred language for the ‘update elements’ section. Added ‘en’ in the field and the content text was updated. Thanks @fridomac 

rickwhois
Contributor

@Joostvantwout Are other elements in the updateElements section changing? I don't modify that actionButtonText element, mainly just subHeader & mainContentText. But actionButtonText is listed as a modifiable element so from a functionality stand point it should work. I don't believe there is a preferred order of installation, but whenever I change the config, I don't reinstall nudge and things work fine. I'm not an expert with nudge, I just haven't had many issues with it. You may want to inquire with the helpful folks in the nudge slack channel.

Yes, actionButtonText is modifiable. 

Joostvantwout
New Contributor III

@rickwhois May I ask you for which JSON file you deploy? Maybe you can post it here? :)

rickwhois
Contributor

@Joostvantwout Sure no prob! It is the exact same as here https://github.com/macadmins/nudge/tree/main/Schema/jamf

jschank
Contributor

I know I posted yesterday and got a response but it looks like JamfNation rolled back and I lost the link.  Looking for the pkg location for Nudge so I can test.

 

Thanks in advanced

Here is the link for the package source for Nudge

 

https://github.com/macadmins/nudge/releases/tag/v.1.0.0.05062021124623

 

jschank
Contributor

Can anyone confirm what setting to use on the frequency?  Pic shows Once per day but in the typed section, it is showing ongoing.  That would be a ton of backend processes.  

Screen Shot 2021-07-29 at 1.56.55 PM.png

Our Nudge deployment is set up with Nudge.pkg and LaunchAgent.pkg pushed once per computer along with scoping the Nudge JSON configuration profile. Didn't set it up via this Jamf Guide Scripting method. Just started to test and deploy this for the Big Sur machines. It was working perfectly for the testing and we pushed it out to more users and now we are unable to click on the "Update Device" button but able to hit the return key to get the software update pane to open. Posted to macadmins slack to see if others have seen this.

Hi Debra, I this still open ?

@Samstar777 the update button issue not working when clicking on it was resolved by shortening the mainContentText. Added this to the issues list on GitHub.

Lodavigo
New Contributor II

@debrat I am having the issue of the update button not doing anything. I modified and shortened the mainContextText, but it still doesn't work. Running version 1.1.x -- curious if there is something else I should be trying?

Of note: if i run Nudge in demo-mode, the button works fine.

The developer posted this update in GitHub: 

"That has been fixed as of a40c521 and will be in the next release of Nudge v1.1.0.

Moving forward, if you need additional text for mainContentText that takes over 125 pixels in height, a scroll bar will appear and the user can scroll up/down to read the additional context. The button no longer fails to trigger as well."

I would suggest, Keep it once per day as Keeping frequency ongoing for every 15 mints along with update inventory can increase load on your jamf database

jschank
Contributor

I am still having issues getting Nudge to work correctly.  I was able to change the wording to my liking.  Even able to change the Apple logo on the left side pane.  I uploaded the Config Profile using the Custom Schema.  Everything seems to look good in the config profile.  I can make changes and I see the updated info in System Preferences>Profiles.  If I open Nudge from Applications it opens fine and looks great.  

  The problem is the setting I have in the Config Profile, initialrefreshcycle, approachingrefreshcycle, immenentrefreshcycle, elasperefreshcycle does not initiate Nudge to open.  Even if I change to 60 sec just to get it to open.  If I use the launch agent it will reopen if I reboot the device.

Can someone confirm that by setting these parameters that Nudge should open?  I'm using the Config Profile method because I am having even more issues trying JSON.  Has anyone had the config profile method working?

 

I am also experiencing issues getting Nudge to work. I can't even get the JSON Configuration Profile to deploy to my test machine. I am getting the error:

 

 

-[__NSCFConstantString objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fff80a00ad0

 

 

I took the default example JSON provided in the repo and made minimal changes and I am still getting the error above. I also tried to deploy the mobileconfig file via Jamf Pro and it also did not work. I lastly tried to download the mobileconfig file to the mac and install manually, and it doesn't work either, and actually causes my Profiles window to become "corrupt", and I am unable to open it until I reboot the machine.

 

My plist file is below. Any guidance would be appreciated.

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>optionalFeatures</key>
    <dict>
      <key>acceptableApplicationBundleIDs</key>
      <array>
        <string>us.zoom.xos</string>
      </array>
      <key>aggressiveUserExperience</key>
      <false/>
      <key>asyncronousSoftwareUpdate</key>
      <false/>
      <key>attemptToFetchMajorUpgrade</key>
      <false/>
      <key>enforceMinorUpdates</key>
      <false/>
    </dict>
    <key>osVersionRequirements</key>
    <array>
      <dict>
        <key>aboutUpdateURL</key>
        <string>https://support.apple.com/en-us/HT211896#macos1121</string>
        <key>aboutUpdateURLs</key>
        <array>
          <dict>
            <key>_language</key>
            <string>en</string>
            <key>aboutUpdateURL</key>
            <string>https://support.apple.com/en-us/HT211896#macos1121</string>
          </dict>
        </array>
        <key>majorUpgradeAppPath</key>
        <string>/Applications/Install macOS Big Sur.app</string>
        <key>requiredInstallationDate</key>
        <string>2021-09-13T00:00:00Z</string>
        <key>requiredMinimumOSVersion</key>
        <string>11.6</string>
        <key>targetedOSVersionsRule</key>
        <string>11</string>
      </dict>
    </array>
    <key>userExperience</key>
    <dict>
      <key>allowUserQuitDeferrals</key>
      <true/>
      <key>allowedDeferrals</key>
      <integer>1000000</integer>
      <key>allowedDeferralsUntilForcedSecondaryQuitButton</key>
      <integer>14</integer>
      <key>approachingRefreshCycle</key>
      <integer>6000</integer>
      <key>approachingWindowTime</key>
      <integer>72</integer>
      <key>elapsedRefreshCycle</key>
      <integer>300</integer>
      <key>imminentWindowTime</key>
      <integer>24</integer>
      <key>imminentRefreshCycle</key>
      <integer>600</integer>
      <key>initialRefreshCycle</key>
      <integer>18000</integer>
      <key>maxRandomDelayInSeconds</key>
      <integer>1200</integer>
      <key>noTimers</key>
      <false/>
      <key>nudgeRefreshCycle</key>
      <integer>60</integer>
      <key>randomDelay</key>
      <false/>
    </dict>
    <key>userInterface</key>
    <dict>
      <key>actionButtonPath</key>
      <string>jamfselfservice://remediate</string>
      <key>fallbackLanguage</key>
      <string>en</string>
      <key>forceFallbackLanguage</key>
      <false/>
      <key>forceScreenShotIcon</key>
      <false/>
      <key>iconDarkPath</key>
      <string>/usr/local/shared/logo.png</string>
      <key>iconLightPath</key>
      <string>/usr/local/shared/logo.png</string>
      <key>screenShotDarkPath</key>
      <string/>
      <key>screenShotLightPath</key>
      <string/>
      <key>showDeferralCount</key>
      <false/>
      <key>simpleMode</key>
      <false/>
      <key>singleQuitButton</key>
      <false/>
    </dict>
  </dict>
</plist>

 

 

Levi_
Contributor II

I am having the same problem. The only way I can get Nudge to run now is by installing the default autolaunch.pkg and it will open up every 30 minutes but the deferral count is now no longer being counted.

If I run Nudge alongside a very basic config file installed locally on the PC it works 100% as intended. I just can't get it to launch without using the auto launch agent. More so, if I add my own auto launch agent, it doesn't launch. I'm really confused by this. I really hope Apple gives us a way to manage updates in Monterey. I swear I'll upgrade every Mac to Monterey day 1 if it has a way to manage updates.

Brookeb
New Contributor

Hi Levi, I know this is an older thread but I’m having this same issue. The deferral count does not increase and the user’s deferral interval is being ignored and automatically launching at 30 mins. I know it’s probably the default LaunchAgent, but wondering what the fix is, thank you. 

Brookeb
New Contributor

Hi Levi, we’re having the exact same issue of the deferral count remaining at 0 and it launching at 30 mins regardless of user input. Did you ever figure it out?! I assume it’s something to do with the launch agent. 

How did you change the apple logo on the left side pane ? trying to do it, couldn't find enough resources. Thanks in advance.

jschank
Contributor

Nudge 1.1 version issue

  Anyone else having an issue with version 1.1?  I'm testing with current stage at ApproachingRefresh Cycle (<72hrs).  Running nudge it opens and shows the tam "I Understand".   If you leave Nudge active, the main display on screen, the "I Understand" tab disappears with no other option.  Like the time has elapsed.  Days remaining to update still show 3.

Am I missing a setting in the Configuration Profile?  If I roll back to v 1.0 this does not happen.

Also just to confirm the Launch agent and logger have not changed?  I still see LaunchAgent at 1.0.0 and Logger at 1.0.1.  I have not change the pkg in Jamf as I did the Nudge app.

 

  

anuj530
New Contributor III

Hey! I am seeing the same issue. Did you ever find a solution for this? 

vinu_thankachan
Contributor

I am using Nudge 1.1 and facing an issue .

Nudge is launching every 1 minute .  Image 11-1-21 at 8.52 PM.jpg

dlondon
Valued Contributor

Hi @vinu_thankachan 

Not sure about that 480 for Minute.  Surely Minute is restricted to a range between 0 and 59 or maybe 60?

Try removing

 

<dict>
   <key>Minute</key>
   <integer>480</integer>
</<dict>

 

and see if that stops it running every minute.


I'm thinking maybe something like this might work:

 

<key>StartCalendarInterval</key>
    <array>
        <dict>
            <key>Hour</key>
            <integer>0</integer>
            <key>Minute</key>
            <integer>0</integer>
        </<dict>
        <dict>
            <key>Hour</key>
            <integer>8</integer>
            <key>Minute</key>
            <integer>0</integer>
        </<dict>
        <dict>
            <key>Hour</key>
            <integer>16</integer>
            <key>Minute</key>
            <integer>0</integer>
        </<dict>
    </array>

 

 

jschank
Contributor

Anyone know the terminal command to remove an active Nudge session?  I came across the command in the past but cannot seem to find it.  I have an old test device with an old Nudge session applied.