Skip to content
https://developer.apple.com/documentati ... e-keychain
There are only a couple of points I recommend checking:
1. Make sure you've followed the "plutil -convert xml1" step to convert the bundled settings into XML format as documented at the link below. It looks like the bundled plist file may still be in binary format. Your settings still deployed fine on the test macOS 15.1 setup, but if the plist file is in the binary format it could potentially result in deployment issues.
https://www.sparklabs.com/support/kb/ar ... n-settings
2. When deploying the installer using MDM, it will likely be running the installer under a different user (typically root or a dedicated MDM user), not under the end-user's account. This means the bundled data won't be deployed under their account, and so they won't receive the bundled settings and connections. Instead you'll want to use our managed installer template ("viscosity_managed_installer"), which will deploy the bundled settings for all user accounts (not just the account it's running under). The rule is essentially: if you're building an installer to give to end users that they'll run themselves then use the standard installer template, but if you're bundling an installer to deploy via MDM then used the managed installer template.
You can download the "viscosity_managed_installer" template from either the Jamf Now or Munki guides at:
https://www.sparklabs.com/support/kb/ca ... nterprise/
Cheers,
James
https://www.sparklabs.com/support/kb/ar ... ion-folder
Cheers,
James
Continued issues making a signed bundles installer... because I don't know what I'm doing :)
Got a problem with Viscosity or need help? Ask here!
Thanks a lot for the continued support. I will be sending that .zip file to you shortly.
I do have one question for you on the script for the notarytool. Part of the code calls for myApplePassword. Is this our AppleID password, our Viscosity App Specific Password, or the password of the root/admin user on the machine we're running the script on?
I do have one question for you on the script for the notarytool. Part of the code calls for myApplePassword. Is this our AppleID password, our Viscosity App Specific Password, or the password of the root/admin user on the machine we're running the script on?
I do have one question for you on the script for the notarytool. Part of the code calls for myApplePassword. Is this our AppleID password, our Viscosity App Specific Password, or the password of the root/admin user on the machine we're running the script on?It should be the app specific password. You can find some more details from Apple at:
https://developer.apple.com/documentati ... e-keychain
Thanks a lot for the continued support. I will be sending that .zip file to you shortly.Thank you for sending that along. I've tested running your built bundle on a fresh install of macOS 15.1, and it deployed just fine. The settings and VPN connection were added, and your bundle template looks fine.
There are only a couple of points I recommend checking:
1. Make sure you've followed the "plutil -convert xml1" step to convert the bundled settings into XML format as documented at the link below. It looks like the bundled plist file may still be in binary format. Your settings still deployed fine on the test macOS 15.1 setup, but if the plist file is in the binary format it could potentially result in deployment issues.
https://www.sparklabs.com/support/kb/ar ... n-settings
2. When deploying the installer using MDM, it will likely be running the installer under a different user (typically root or a dedicated MDM user), not under the end-user's account. This means the bundled data won't be deployed under their account, and so they won't receive the bundled settings and connections. Instead you'll want to use our managed installer template ("viscosity_managed_installer"), which will deploy the bundled settings for all user accounts (not just the account it's running under). The rule is essentially: if you're building an installer to give to end users that they'll run themselves then use the standard installer template, but if you're bundling an installer to deploy via MDM then used the managed installer template.
You can download the "viscosity_managed_installer" template from either the Jamf Now or Munki guides at:
https://www.sparklabs.com/support/kb/ca ... nterprise/
Cheers,
James
Web: https://www.sparklabs.com
Support: https://www.sparklabs.com/support
Twitter: https://twitter.com/sparklabs
Support: https://www.sparklabs.com/support
Twitter: https://twitter.com/sparklabs
Thanks for the followup. So I'm happy to report that I've now had success, but not without issues.
Using (most of) the updates you gave me and the Managed installer, I was able to deploy the install successfully on the test machine. However, for some reason there are two copies of the connection that show up. Both are identical, and both seem to work, so not a deal breaker, but still I'm unsure why.
Also, I was unable to convert the .plist file to .xml. When I enter in the script:
REMOVED FOR PRIVACY-MBP-2023M2Max-12C38C-64GB-1TB ~ % plutil -convert xml1 /Users/rhorsman/Desktop/Viscosity/Viscosity Managed Installer/Preconfigure/com.viscosityvpn.Viscosity.plist
This is what gets returned in Terminal:
Users/rhorsman/Desktop/Viscosity/Viscosity: file does not exist or is not readable or is not a regular file (Error Domain=NSCocoaErrorDomain Code=260 "The file “Viscosity” couldn’t be opened because there is no such file." UserInfo={NSFilePath=/Users/rhorsman/Desktop/Viscosity/Viscosity, NSUnderlyingError=0x600001058870 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}})
Managed: file does not exist or is not readable or is not a regular file (Error Domain=NSCocoaErrorDomain Code=260 "The file “Managed” couldn’t be opened because there is no such file." UserInfo={NSFilePath=Managed, NSUnderlyingError=0x60000105c750 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}})
Installer/Preconfigure/com.viscosityvpn.Viscosity.plist: file does not exist or is not readable or is not a regular file (Error Domain=NSCocoaErrorDomain Code=260 "The file “com.viscosityvpn.Viscosity.plist” couldn’t be opened because there is no such file." UserInfo={NSFilePath=Installer/Preconfigure/com.viscosityvpn.Viscosity.plist, NSUnderlyingError=0x60000105d050 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}})
I'm guessing it's a syntax error in the path script? But as far as I can tell it's correct. I did the usual trick of dragging the app from the location into terminal to get the path.
So with that in mind, I just opened the .plist in BBEdit and changed the contents to match what was in the one I had initially provided to you to review.
Using (most of) the updates you gave me and the Managed installer, I was able to deploy the install successfully on the test machine. However, for some reason there are two copies of the connection that show up. Both are identical, and both seem to work, so not a deal breaker, but still I'm unsure why.
Also, I was unable to convert the .plist file to .xml. When I enter in the script:
REMOVED FOR PRIVACY-MBP-2023M2Max-12C38C-64GB-1TB ~ % plutil -convert xml1 /Users/rhorsman/Desktop/Viscosity/Viscosity Managed Installer/Preconfigure/com.viscosityvpn.Viscosity.plist
This is what gets returned in Terminal:
Users/rhorsman/Desktop/Viscosity/Viscosity: file does not exist or is not readable or is not a regular file (Error Domain=NSCocoaErrorDomain Code=260 "The file “Viscosity” couldn’t be opened because there is no such file." UserInfo={NSFilePath=/Users/rhorsman/Desktop/Viscosity/Viscosity, NSUnderlyingError=0x600001058870 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}})
Managed: file does not exist or is not readable or is not a regular file (Error Domain=NSCocoaErrorDomain Code=260 "The file “Managed” couldn’t be opened because there is no such file." UserInfo={NSFilePath=Managed, NSUnderlyingError=0x60000105c750 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}})
Installer/Preconfigure/com.viscosityvpn.Viscosity.plist: file does not exist or is not readable or is not a regular file (Error Domain=NSCocoaErrorDomain Code=260 "The file “com.viscosityvpn.Viscosity.plist” couldn’t be opened because there is no such file." UserInfo={NSFilePath=Installer/Preconfigure/com.viscosityvpn.Viscosity.plist, NSUnderlyingError=0x60000105d050 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}})
I'm guessing it's a syntax error in the path script? But as far as I can tell it's correct. I did the usual trick of dragging the app from the location into terminal to get the path.
So with that in mind, I just opened the .plist in BBEdit and changed the contents to match what was in the one I had initially provided to you to review.
However, for some reason there are two copies of the connection that show up. Both are identical, and both seem to work, so not a deal breaker, but still I'm unsure why.In the template you provided us via email your connection was stored in the "Connections-Append" directory, which means every time the installer is run the connection will be added in addition to any existing connections. You may like to consider using the Connections-Overwrite or Connections directories instead.
https://www.sparklabs.com/support/kb/ar ... ion-folder
I'm guessing it's a syntax error in the path script? But as far as I can tell it's correct. I did the usual trick of dragging the app from the location into terminal to get the path.The path has a spaces in it (the "Viscosity Managed Installer" part), so it either needs to be wrapped in quotes, or have backslashes before the spaces. Either of the following should work:
Code: Select all
plutil -convert xml1 "/Users/rhorsman/Desktop/Viscosity/Viscosity Managed Installer/Preconfigure/com.viscosityvpn.Viscosity.plist"
plutil -convert xml1 /Users/rhorsman/Desktop/Viscosity/Viscosity\ Managed\ Installer/Preconfigure/com.viscosityvpn.Viscosity.plist
Cheers,
James
Web: https://www.sparklabs.com
Support: https://www.sparklabs.com/support
Twitter: https://twitter.com/sparklabs
Support: https://www.sparklabs.com/support
Twitter: https://twitter.com/sparklabs
Awesome. All of that seemed to work, and I now have XML config files.
I was able to send out an installer for non-managed machines that installed without issue with only one connection, and the managed installer also works, albeit with two connections. It's odd, as I have the exact same folder configuration, and I literally copy/pasted the config files between the managed/unmanaged bundles and somehow the managed one has two connection. Better than zero though
Thanks for all your patience and support.
I was able to send out an installer for non-managed machines that installed without issue with only one connection, and the managed installer also works, albeit with two connections. It's odd, as I have the exact same folder configuration, and I literally copy/pasted the config files between the managed/unmanaged bundles and somehow the managed one has two connection. Better than zero though
Thanks for all your patience and support.