IBMs Enrollment Screen Recreated

jtratta
New Contributor III

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

137 REPLIES 137

jtratta
New Contributor III

@sgoetz

Looks like I found the culprit. I have fixed the mistake in the Configurations.m file and it restored the waypoints on my machine.

You can either pull the code down again or you can just fix the 5 lines of code in your app.

If you check out the commit here you can see the changes in red and green in the Configurations.m file. In your version...just replace the red lines with the green lines and see if that gets you up and running.

The changes in the AppDelegate are to just silence the Swift 3 warnings...nothing to worry about for now.

Thanks for finding this one!

sgoetz
Contributor

@jtratta

Hey Jason,

That fixed it!!!!! Funny thing I was looking at the file and noticed the PSH didn't match what I was using in Apple Script and was wondering if that was the issue. But Im not experienced enough with creating Apps so I didn't want to make it worse!!

Thank you again!!!!

Shawn G!!!

chriscollins
Valued Contributor

Hey @jtratta, Thanks so much for this and its working great. Except I do have one issue that I am sure is something related to autolayout but if the jamf log ends up having a long line in it like "the connection to the distribution point failed for package x, retrying on server.pretendco.com/CasperShare" and the feedback label gets big, then it sort of "zooms" in towards the upper left corner and the quit button ends up off screen, etc. I have tried different constraint settings but not finding something that works. Any ideas?

jtratta
New Contributor III

@chriscollins

I think you're right, sounds like the layout just needs some settings. Have you tried the technique I described here?

https://jamfnation.jamfsoftware.com/discussion.html?id=17467#responseChild106999

chriscollins
Valued Contributor

@jtratta Yeah I tried resetting the contraints and tried every constraint option but it still exhibits the same behavior. Hrmmm.

chriscollins
Valued Contributor

@jtratta I think I figured it out. I changed the content compression resistance priority for the label to be low so it couldn't "fight" autolayout's attempts to shrink it down to fit the screen when in full screen mode.

danny_hanes
Contributor

This is great! I am playing around with it now, but for some reason the "Quit" button is not clickable when I run it from AppleScript. If I double click the application to run it, the quit button works just fine. Also, is it possible to have the app close after the progress bar gets to the end?

matthewbodaly
New Contributor

Good work. This gives me a good starting point.

m_entholzner
Contributor III
Contributor III

Guys, is it possible to launch ProgressScreen like LoginLog? Means, is it possible to launch ProgressScreen only in LoginWindow without a user being logged in?

chriscollins
Valued Contributor

@m.entholzner theoretically yes but I am pretty sure that the actual jamf binary/quickadd from the server is not installed either DEP until the initial local user gets to their Desktop the first time (that's been my experience at least) so not sure how you'd install the app or launch it at the login window during the setup assistant.

m_entholzner
Contributor III
Contributor III

We don't want to use ProgressScreen in a "classic" DEP scenario, it should be used as a more eye-candy replacement for LoginLog. We used to use LoginLog to display the jamf.log while macOS upgrades for example.

betty02
New Contributor II

Hows everyone got this looking these days?

esembly4
New Contributor III

What does everyone think about the customize your setup that IBM showed today?

hkabik
Valued Contributor

I think I want it.

mbezzo
Contributor III

It's absolutely awesome and I wish they'd open source and release it so I can use it!

mlavine
Contributor

I really wish they would open source it as well. This would be awesome for everyone.

esembly4
New Contributor III

Lets ask him today in the session

loceee
Contributor

Don't hold your breath. You have to look at their motivations. They offer a commercial outsourced Mac management service. This is their magic sauce. I don't expect they will give it away.

I'd like to be surprised though!

FritzsCorner
Contributor III

I think he said it would only be available for (GTS?) customers. I might have the acronym wrong, but as @loceee said, it's their magic sauce.

jtratta
New Contributor III

We'll just have to make our own then!

rdwhitt
Contributor II

@jtratta I fully expect this to be complete by the end of your flight home.

mbezzo
Contributor III

Haha, yes! Can't wait to start testing the new version @jtratta! ;)

Mika-L
New Contributor II

Great! I can't wait to see, if it is possible to implement a choice window to this (like Computer prefix choice per location)

roiegat
Contributor III

So I downloaded the files and opened in Xcode. I build the project and got 12 errors. Is there anything I need to do in order to get it to compile? I wanted to see it compile before I started making changes to the HMTL.

mlavine
Contributor

@roiegat @jtratta Was this project updated for Swift 3?

jtratta
New Contributor III

This was updated for Swift 3. You will need the latest version of Xcode 8.0 (8A218a). If you're still seeing errors please post them as issues on GitHub. https://github.com/jason-tratta/ProgressScreen/issues

Thanks!

roiegat
Contributor III

@jtratta I was using 7.3.1...which would account for the errors. Will update and try it again.

timlarsen
Contributor

@jtratta are you able to provide a high level overview of what you (or anyone else here) do with your launch agent and launch daemon for when a reboot is required at the beginning of the progress bar setup process? I noticed in one of the screenshots above (I think in your cleanup script) you posted that you had both and was wondering how you "continued" the setup process (or not sure if you're doing everything on the "enrollment" trigger or if you are running other policies with custom events or what have you). Thanks!

gavin_pardoe
New Contributor III

Hi everyone

After seeing IBM's latest update to the enrolment screen at JUNC i wanted to try and make something similar. I also wanted something with a bit more user interaction. It's mostly bassed on requestes and idea's from some of my customers.

heres what i have come up with: DEP-Enrolment

Far from perfect and lots that can be added, hopfuly by the community. I have not included any API in this version mainly due to time (or the lack of it) but lots that could be imporved with splash of API.

Also im not a developer or programer (not even close), so theres bound to be some non optimal code.

thanks.

FritzsCorner
Contributor III

@gavin.pardoe This looks really nice! Hopefully I will have a chance to take a look at this in the next few weeks as things slow down for the holiday. I will definitely provide any feedback that I can.

Aaron

jwojda
Valued Contributor II

@gavin.pardoe what if I don't want to use departments? Can I just comment it out or will that cause issues?

I assume we can add more popups, can those popups relate to a specific key, for instance if a popup says United States, can I have it record "US"?

gavin_pardoe
New Contributor III

@jwojda good question. First you need to delete pop up menu: in main.storyboard on the source view controller highlight and delete the department label and pop up menu.

Then inside SourceViewController.swift delete or comment out line 33, 42, 48-51, 73, 74, 92 & 115. on line 80 you need to remove '-department (departmentValue)'

edit: theres a backslash inbetween -department and (department) that is not showing up in the post.

MischaB
New Contributor II
New Contributor II

@gavin.pardoe The DEP app look really great, i got a question, what if you activate Filevault, can there be a reboot option added with the finish button? (and maybe a nice to have that after the (filevault) reboot the "whats next" app is open after login.)

gavin_pardoe
New Contributor III

@mvdbent Yes, a reboot can be added to the finish button as well as leaving a launch agent. on reboot you can then display the whats next/ next steps/ web view, would be easier to create a specific web view app (very easy todo) to call on reboot than to try resume the DEP app where it left off.

loceee
Contributor

Finally getting to build out something with ProgressScreen (love it).. don't love the AppleScript interaction from a jam policy. This might some people out.

https://github.com/loceee/OSXCasperScripts/blob/master/progressScreenHelper.py

Lets you call and configure ProgressScreen easier from a JAMF policy. Set build time (persistent from across a session) so you can then set the progress as a percentage as you build policies run.

I don't love massive build scripts and would rather have policies doing the work with helpers scripts where needed. It's more visible and flexible that way.

Thanks again to @jtratta for a great tool!

progressScreenHelper.py
optional arguments:
  -h, --help            show this help message and exit
  --start [[html_path]]
                        start ProgressScreen with [html_path]
  --fullscreen          set fullscreen mode
  --hidequit            hide the quit button
  --buildtime [build_time_secs]
                        set [build_time_secs] for progress bar
  --progress [progress_percentage]
                        set [progress_percentage] (based on build_time_sec)
                        for progress bar
  --waypoints [app.pkg] [app.pkg] [app.pkg] [app.pkg]
                        set waypoints to [app1.pkg] [app2.pkg] [app3.pkg]
                        [app4.pkg]
  --end                 quit the app and remove temp file

danielslijper
New Contributor

@gavin.pardoe Awesome work! Maybe you can start a separate post so we can post contributions there to keep ProgressScreen and DEP-Enrolment contributions separate. I have been tinkering with your app and a script to run the policies... Thanks a lot for sharing!

jared_f
Valued Contributor

Just saw this. I am going to give it a go in our environment. Thanks!

mbezzo
Contributor III

Hi All,
ProgressScreen has been working great for us over the last year and a half - but our branding has changed so I'm working on updating it. Everything is going great with @jtratta's new version. I'm trying to change the color of the progress bar border, as the theme is now very dark. It is just completely invisible - of course you can see the blue bar filling, but without a visible endpoint it's fairly useless. Anybody have any Xcode tips on changing the slightly transparent black border to say, white?

Thanks!

jtratta
New Contributor III

@mbezzo

There's nothing you can do inside of Xcode to affect the border color of NSProgressIndicator, nor does it look like the class itself has a method to change it either. Tint of the bar is simple...border not so much.

My guess, you're probably going to have to look into subclassing NSProgressIndicator and redraw the border in the drawRect method. There might already be something out there on GitHub....but nothings coming up in my quick search.

mbezzo
Contributor III

Thanks! I was afraid of that - appreciate you poking around.

Will see if I can figure out subclassing. :)

Thanks!