Posted on 10-19-2015 09:21 AM
Hi all,
Like many, I wanted my very own enrollment screen like the one IBM showed at the JNUC. I threw something together that works very similarly. This is a native app written in swift. I did try and make it easily editable for anyone to use and customize without knowing how to code. Here's the repo...I'll be updating and adding things as time goes on and cleaning it up.
You'll need to supply a html based page with your site specific information and then specify where 4 different packages land in the installation so the progress bar can display accurate information.
https://github.com/jason-tratta/ProgressScreen
Posted on 02-09-2017 12:37 PM
Does anyone know if the waypoint names can contain wildcards? Our packages will always have the same format, but the version number is included. We usually have something like "[group that uploaded it] [Name of program]-[version number].pkg", which would look something like "+Global+ Google Chrome-56.0.2924.87.pkg". Since we have to have the Chrome version in the package name every time, but everything else will stay the exact same, the ability to use a wildcard in it would be fantastic.
Posted on 02-09-2017 12:46 PM
you could always build dummy payload free packages to place in your package flow to use for the waypoints?
25percent.pkg
50percent.pkg
75percent.pkg
Posted on 02-09-2017 12:52 PM
I could, but our environment is getting stricter on package names and purposes which could lead to a situation where I can't actually keep them in the JSS like that.
Posted on 02-09-2017 01:57 PM
The updateWaypointMethod() method in ProgressScreen would need to be altered to allow for wildcards. I'll see if this is something I can add in a future update.
Posted on 02-22-2017 02:47 PM
@jtratta Is there any place with a more detailed explanation for how to write up a script to configure the Progress Screen? I was modifying the project itself, but now I'm trying to make it a bit easier for others to use it at my organization. So I was going to write up a script that pulled JAMF parameters($4, $5, etc) in to fill in the blanks. The problem is I can't even get the bare minimum to work through applescript. I've made a very basic script that looks like this:
#!/bin/sh
user=`stat -f%Su /dev/console`
sudo -u $user /usr/bin/osascript <<TimeComplete
tell application "ProgressScreen"
set fullscreen of every configuration to false
end tell
TimeComplete
From what I gather, all this should do is make the ProgressScreen app not use fullscreen. Instead, it seems to launch it in fullscreen while keeping the focus locked to the terminal window it obscures. After blindly quitting terminal, the Quit button in the ProgressScreen functions again. Clearly I am missing something basic here. Can you/anyone else point me in a good direction?
Posted on 02-22-2017 03:18 PM
Posted on 02-23-2017 06:29 AM
@loceee Oh man, I had looked at that but wasn't sure where the flags needed to be entered. I didn't realize it was the exact thing I was looking for. Thanks for the heads up.
Posted on 02-27-2017 01:32 PM
@loceee Is that helper script working reliably for you? For me, it's failing to change the html loaded in about 75% of the time. That forces it to stop before it sets the build time, quit button, fullscreen, etc. It always fails in the exact same way, but it doesn't always fail. I think it'd be less frustrating if it was consistent one way or the other. The path to the replacement html is /PS/index.html. Here's the error that pops up most of the time:
Running script COE - Progress Screen Helper...
Script exit code: 1
Script result: 32:89: execution error: An error of type -10810 has occurred. (-10810)
Traceback (most recent call last):
File "/Library/Application Support/JAMF/tmp/COE - Progress Screen Helper", line 145, in
main()
File "/Library/Application Support/JAMF/tmp/COE - Progress Screen Helper", line 105, in main
subprocess.check_output(osa_full_command)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 573, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['osascript', '-e', 'tell application "ProgressScreen"', '-e', 'set htmlURL of every configuration to "/PS/index.html"', '-e', 'end tell']' returned non-zero exit status 1
Error running script: return code was 1.
It should be noted that when everything is run outside of enrollment, it works perfectly 100% of the time. It only has these errors if it is run at enrollment.
Posted on 03-27-2017 11:59 PM
Hi Guys,
I know this is not the right forum, but i thought maybe someone here may know
Is there any program that does roughly the same thing on the window platform ?
The ability to display progress and feedback for deployment ?
Thank
Posted on 03-28-2017 01:09 AM
Found your GitHub a while back and have been using Progresscreen for our DEP deploy since. Thank you for a really nice share.
Posted on 05-22-2017 12:08 PM
I managed to resolve my issue. For whatever reason, the progressScreenHelper.py file would not run correctly if run through JAMF. If I had to guess, I'd say this is because JAMF uses the System user when pushing things.
To resolve this, I included the progressScreenHelper.py script in the package that places all the needed files and added a postinstall shell script to launch it as the currently logged in user. It looks like this:
#!/bin/sh
## postinstall
# Finds the current user's account
currentuser=$(/bin/ls -la /dev/console | /usr/bin/cut -d ' ' -f 4)
# Runs the script as that user.
su -l $currentuser -c "python /PS/progressScreenHelper.py --start /PS/index.html --fullscreen --hidequit --buildtime 3600"
exit 0 ## Success
exit 1 ## Failure
In my testing, this way of launching things works every time while leaving it to run as System failed more than 60% of the time.
Posted on 05-22-2017 02:22 PM
Strange that's not he behaviour I have been seeing. I'll be honest though I am not using it in production, and I am evaluating which way I will head for our DEP prod rollout.
If this is behaviour others are seeing it might be worthwhile making the script itself do the OSA calls as the current user to alleviate your workaround. Come to think of it it's probably better practice anyway... but I was thinking that we may even be able to drop it over the loginwindow in some cases (software update runs etc).
Posted on 07-27-2017 11:31 AM
@jtratta Would you mind sharing the Muse project file which had your template from the screenshot in your enrollment app on GitHub?
Posted on 07-27-2017 11:44 AM
@HauRuck83 Unfortunately, that project is long gone. The generated files are in the Github project, in the htmlFiles folder. I think you can open that in Muse.
Posted on 09-04-2017 05:49 AM
Hey @gavin.pardoe ,
stumbled on your app and looks really good! Nice job!
I'd need to do some modification (already edited the Department section). Would it possible to change the Asset Tag with the Serial Number, gathering the info from bash?
Thank you!
Posted on 03-09-2018 09:14 AM
Sorry to resurrect an old thread but I have some questions about this.
I've recently become interested in doing this and started implementing my own solution.
How are you running the app at the loginwindow? I assume it's with a pre-login launchdaemon. As such, I've found the Apple example for that and started looking through it, but it's not answering my questions. For instance, I'm not finding a plist example for the launchdaemon in there.
Second, I know you have to set the "canBecomeVisibleWithoutLogin" value in the application but I'm not sure where.
I'm assuming it will be in appDelegate (swift), but I need an outlet to an NSWindow which I can't seem to make.
I am using the Storyboard instead of a xib file. Apple's example has a xib file with a panel that they make the connection to, then call that on the panel. How would I do the equivalent with the storyboard?
I feel like I need to somehow get the appdelegate's root controller and do it there.
Thanks for any and all info you can provide!
Posted on 10-29-2018 10:08 AM
IBM Posted their app, have a look!
https://github.com/IBM/mac-ibm-enrollment-app
Posted on 07-05-2019 10:30 AM
Sorry to bring up an old dead thread but has anyone tried this with Mojave, specifically with dark mode? I noticed when in Dark mode, it doesn't show everything compared to in light mode. can't seem to figure how to fix/resolve this. Any help would be appreciated!