#!/bin/bash curl -# -o "package.dmg" "http://PathToDMG/package.dmg"
tags: MrNetTek
Lab Core | The Lab of MrNetTek
A blog about IT, technical solutions, and code.
Download
New Skype for Desktop (Windows) is available here:
https://go.skype.com/windows.desktop.download mirror
Size
65.4 MB
Silent Install
setup.exe /VERYSILENT /SP- /NOCANCEL /NORESTART /SUPPRESSMSGBOXES /NOLAUNCH -ms
Install Location (32 Folders, 152 Files, 239 MB)
C:\Program Files (x86)\Microsoft\Skype for Desktop
Silent Uninstall
“C:\Program Files (x86)\Microsoft\Skype for Desktop\unins000.exe” /SILENT
Registry
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Skype_is1]
“Inno Setup: Setup Version”=”5.6.1 (u)”
“Inno Setup: App Path”=”C:\\Program Files (x86)\\Microsoft\\Skype for Desktop”
“InstallLocation”=”C:\\Program Files (x86)\\Microsoft\\Skype for Desktop\\”
“Inno Setup: Icon Group”=”Skype”
“Inno Setup: User”=”Demo99”
“Inno Setup: Language”=”en”
“DisplayName”=”Skype version 8.51”
“DisplayIcon”=”C:\\Program Files (x86)\\Microsoft\\Skype for Desktop\\Skype.exe”
“UninstallString”=”\”C:\\Program Files (x86)\\Microsoft\\Skype for Desktop\\unins000.exe\””
“QuietUninstallString”=”\”C:\\Program Files (x86)\\Microsoft\\Skype for Desktop\\unins000.exe\” /SILENT”
“DisplayVersion”=”8.51”
“Publisher”=”Skype Technologies S.A.”
“URLInfoAbout”=”http://www.skype.com/”
“HelpLink”=”https://support.skype.com/”
“URLUpdateInfo”=”www.skype.com/download-skype/”
“NoModify”=dword:00000001
“NoRepair”=dword:00000001
“InstallDate”=”20190820”
“MajorVersion”=dword:00000008
“MinorVersion”=dword:00000033
“VersionMajor”=dword:00000008
“VersionMinor”=dword:00000033
“EstimatedSize”=dword:0003603d
Notes
Disable Skype auto updates (for Windows and Macs)
Skype uses asar compression
C:\Program Files (x86)\Microsoft\Skype for Desktop\resources\app.asar
tags: MrNetTek
Download
A new VLC Player is available here:
https://get.videolan.org/vlc/3.0.8/win64/vlc-3.0.8-win64.exe | all
Size
40.1 MB
Silent Install
setup.exe /S /V/qn
Install Location (244 Folders, 579 Files, 169 MB)
C:\Program Files\VideoLAN\VLC
Silent Uninstall
“C:\Program Files\VideoLAN\VLC\uninstall.exe” /S /V/qn
Registry
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\VLC media player]
“DisplayName”=”VLC media player”
“UninstallString”=”\”C:\\Program Files\\VideoLAN\\VLC\\uninstall.exe\””
“InstallLocation”=”C:\\Program Files\\VideoLAN\\VLC”
“DisplayIcon”=”C:\\Program Files\\VideoLAN\\VLC\\vlc.exe”
“DisplayVersion”=”3.0.8”
“URLInfoAbout”=”https://www.videolan.org/”
“Publisher”=”VideoLAN”
“VersionMajor”=”3”
“VersionMinor”=”0”
“MementoSectionUsed”=””
“MementoSection_SEC01″=dword:00000001
“MementoSection_SEC02a”=dword:00000001
“MementoSection_SEC02b”=dword:00000001
“MementoSection_SEC03″=dword:00000001
“MementoSection_SEC04″=dword:00000001
“MementoSection_SEC05″=dword:00000001
“MementoSection_SEC_EXT_Audio_.3ga”=dword:00000001
“MementoSection_SEC_EXT_Audio_.669″=dword:00000001
“MementoSection_SEC_EXT_Audio_.a52″=dword:00000001
“MementoSection_SEC_EXT_Audio_.aac”=dword:00000001
“MementoSection_SEC_EXT_Audio_.ac3″=dword:00000001
“MementoSection_SEC_EXT_Audio_.adt”=dword:00000001
“MementoSection_SEC_EXT_Audio_.adts”=dword:00000001
“MementoSection_SEC_EXT_Audio_.aif”=dword:00000001
“MementoSection_SEC_EXT_Audio_.aifc”=dword:00000001
“MementoSection_SEC_EXT_Audio_.aiff”=dword:00000001
“MementoSection_SEC_EXT_Audio_.au”=dword:00000001
“MementoSection_SEC_EXT_Audio_.amr”=dword:00000001
“MementoSection_SEC_EXT_Audio_.aob”=dword:00000001
“MementoSection_SEC_EXT_Audio_.ape”=dword:00000001
“MementoSection_SEC_EXT_Audio_.caf”=dword:00000001
“MementoSection_SEC_EXT_Audio_.cda”=dword:00000001
“MementoSection_SEC_EXT_Audio_.dts”=dword:00000001
“MementoSection_SEC_EXT_Audio_.flac”=dword:00000001
“MementoSection_SEC_EXT_Audio_.it”=dword:00000001
“MementoSection_SEC_EXT_Audio_.m4a”=dword:00000001
“MementoSection_SEC_EXT_Audio_.m4p”=dword:00000001
“MementoSection_SEC_EXT_Audio_.mid”=dword:00000001
“MementoSection_SEC_EXT_Audio_.mka”=dword:00000001
“MementoSection_SEC_EXT_Audio_.mlp”=dword:00000001
“MementoSection_SEC_EXT_Audio_.mod”=dword:00000001
“MementoSection_SEC_EXT_Audio_.mp1″=dword:00000001
“MementoSection_SEC_EXT_Audio_.mp2″=dword:00000001
“MementoSection_SEC_EXT_Audio_.mp3″=dword:00000001
“MementoSection_SEC_EXT_Audio_.mpc”=dword:00000001
“MementoSection_SEC_EXT_Audio_.mpga”=dword:00000001
“MementoSection_SEC_EXT_Audio_.oga”=dword:00000001
“MementoSection_SEC_EXT_Audio_.oma”=dword:00000001
“MementoSection_SEC_EXT_Audio_.opus”=dword:00000001
“MementoSection_SEC_EXT_Audio_.qcp”=dword:00000001
“MementoSection_SEC_EXT_Audio_.ra”=dword:00000001
“MementoSection_SEC_EXT_Audio_.rmi”=dword:00000001
“MementoSection_SEC_EXT_Audio_.snd”=dword:00000001
“MementoSection_SEC_EXT_Audio_.s3m”=dword:00000001
“MementoSection_SEC_EXT_Audio_.spx”=dword:00000001
“MementoSection_SEC_EXT_Audio_.tta”=dword:00000001
“MementoSection_SEC_EXT_Audio_.voc”=dword:00000001
“MementoSection_SEC_EXT_Audio_.vqf”=dword:00000001
“MementoSection_SEC_EXT_Audio_.w64″=dword:00000001
“MementoSection_SEC_EXT_Audio_.wav”=dword:00000001
“MementoSection_SEC_EXT_Audio_.wma”=dword:00000001
“MementoSection_SEC_EXT_Audio_.wv”=dword:00000001
“MementoSection_SEC_EXT_Audio_.xa”=dword:00000001
“MementoSection_SEC_EXT_Audio_.xm”=dword:00000001
“MementoSection_SEC_EXT_Video_.3g2″=dword:00000001
“MementoSection_SEC_EXT_Video_.3gp”=dword:00000001
“MementoSection_SEC_EXT_Video_.3gp2″=dword:00000001
“MementoSection_SEC_EXT_Video_.3gpp”=dword:00000001
“MementoSection_SEC_EXT_Video_.amv”=dword:00000001
“MementoSection_SEC_EXT_Video_.asf”=dword:00000001
“MementoSection_SEC_EXT_Video_.avi”=dword:00000001
“MementoSection_SEC_EXT_Video_.bik”=dword:00000001
“MementoSection_SEC_EXT_Video_.divx”=dword:00000001
“MementoSection_SEC_EXT_Video_.drc”=dword:00000001
“MementoSection_SEC_EXT_Video_.dv”=dword:00000001
“MementoSection_SEC_EXT_Video_.dvr-ms”=dword:00000001
“MementoSection_SEC_EXT_Video_.evo”=dword:00000001
“MementoSection_SEC_EXT_Video_.f4v”=dword:00000001
“MementoSection_SEC_EXT_Video_.flv”=dword:00000001
“MementoSection_SEC_EXT_Video_.gvi”=dword:00000001
“MementoSection_SEC_EXT_Video_.gxf”=dword:00000001
“MementoSection_SEC_EXT_Video_.m1v”=dword:00000001
“MementoSection_SEC_EXT_Video_.m2t”=dword:00000001
“MementoSection_SEC_EXT_Video_.m2v”=dword:00000001
“MementoSection_SEC_EXT_Video_.m2ts”=dword:00000001
“MementoSection_SEC_EXT_Video_.m4v”=dword:00000001
“MementoSection_SEC_EXT_Video_.mkv”=dword:00000001
“MementoSection_SEC_EXT_Video_.mov”=dword:00000001
“MementoSection_SEC_EXT_Video_.mp2v”=dword:00000001
“MementoSection_SEC_EXT_Video_.mp4″=dword:00000001
“MementoSection_SEC_EXT_Video_.mp4v”=dword:00000001
“MementoSection_SEC_EXT_Video_.mpa”=dword:00000001
“MementoSection_SEC_EXT_Video_.mpe”=dword:00000001
“MementoSection_SEC_EXT_Video_.mpeg”=dword:00000001
“MementoSection_SEC_EXT_Video_.mpeg1″=dword:00000001
“MementoSection_SEC_EXT_Video_.mpeg2″=dword:00000001
“MementoSection_SEC_EXT_Video_.mpeg4″=dword:00000001
“MementoSection_SEC_EXT_Video_.mpg”=dword:00000001
“MementoSection_SEC_EXT_Video_.mpv2″=dword:00000001
“MementoSection_SEC_EXT_Video_.mts”=dword:00000001
“MementoSection_SEC_EXT_Video_.mtv”=dword:00000001
“MementoSection_SEC_EXT_Video_.mxf”=dword:00000001
“MementoSection_SEC_EXT_Video_.nsv”=dword:00000001
“MementoSection_SEC_EXT_Video_.nuv”=dword:00000001
“MementoSection_SEC_EXT_Video_.ogg”=dword:00000001
“MementoSection_SEC_EXT_Video_.ogm”=dword:00000001
“MementoSection_SEC_EXT_Video_.ogx”=dword:00000001
“MementoSection_SEC_EXT_Video_.ogv”=dword:00000001
“MementoSection_SEC_EXT_Video_.rec”=dword:00000001
“MementoSection_SEC_EXT_Video_.rm”=dword:00000001
“MementoSection_SEC_EXT_Video_.rmvb”=dword:00000001
“MementoSection_SEC_EXT_Video_.rpl”=dword:00000001
“MementoSection_SEC_EXT_Video_.thp”=dword:00000001
“MementoSection_SEC_EXT_Video_.tod”=dword:00000001
“MementoSection_SEC_EXT_Video_.tp”=dword:00000001
“MementoSection_SEC_EXT_Video_.ts”=dword:00000001
“MementoSection_SEC_EXT_Video_.tts”=dword:00000001
“MementoSection_SEC_EXT_Video_.vob”=dword:00000001
“MementoSection_SEC_EXT_Video_.vro”=dword:00000001
“MementoSection_SEC_EXT_Video_.webm”=dword:00000001
“MementoSection_SEC_EXT_Video_.wmv”=dword:00000001
“MementoSection_SEC_EXT_Video_.wtv”=dword:00000001
“MementoSection_SEC_EXT_Video_.xesc”=dword:00000001
“MementoSection_SEC_EXT_Other_.asx”=dword:00000001
“MementoSection_SEC_EXT_Other_.b4s”=dword:00000001
“MementoSection_SEC_EXT_Other_.cue”=dword:00000001
“MementoSection_SEC_EXT_Other_.ifo”=dword:00000001
“MementoSection_SEC_EXT_Other_.m3u”=dword:00000001
“MementoSection_SEC_EXT_Other_.m3u8″=dword:00000001
“MementoSection_SEC_EXT_Other_.pls”=dword:00000001
“MementoSection_SEC_EXT_Other_.ram”=dword:00000001
“MementoSection_SEC_EXT_Other_.sdp”=dword:00000001
“MementoSection_SEC_EXT_Other_.vlc”=dword:00000001
“MementoSection_SEC_EXT_Other_.wvx”=dword:00000001
“MementoSection_SEC_EXT_Other_.xspf”=dword:00000001
“MementoSection_SEC_EXT_SKIN_.vlt”=dword:00000000
“MementoSection_SEC_EXT_SKIN_.wsz”=dword:00000000
“MementoSection_SEC_EXT_Other_.iso”=dword:00000000
“MementoSection_SEC_EXT_Other_.zip”=dword:00000000
“MementoSection_SEC_EXT_Other_.rar”=dword:00000000
“MementoSection_SEC07″=dword:00000001
“MementoSection_SEC08″=dword:00000000
Inside the setup EXE (using 7zip)
Notes
https://wiki.videolan.org/Documentation:Documentation
/L=1033 – Set language to English
/S – Install silently
/NCRC – Skip CRC Check
Use VLC as a Video Downloader for YouTube
1. Click on Media > Open Network stream.
2. Paste the YouTube URL and click the Play button in the player.
3. VLC Media Player starts streaming the video. Click Tools > Codec Information > at the bottom of the window you will see a Location box.
4. Copy the long URL in the box and paste this into your browser’s address bar. The browser will now start playing the video file. You can download the video file to your desktop by doing a Save video as with a right-click on the video.
tags: VLC automation, MrNetTek
Download
Enterprise download requires free Adobe registration: AcroRdrDC1901220036_en_US.exe
Size
166 MB
Silent Install
Extract contents of AcroRdrDC1901220036_en_US.exe using 7zip
Use Acrobat Customization Wizard DC to create custom setup
Package and run: setup.exe
* packaging can be as simple as adding source files to a self-extracting EXE (using WinRar)
Install Location (1475 Folders, 2641 Files, 509 MB)
C:\Program Files (x86)\Adobe\Acrobat Reader DC
Silent Uninstall
MsiExec.exe /x{AC76BA86-7AD7-1033-7B44-AC0F074E4100} /qn /norestart
Registry
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{AC76BA86-7AD7-1033-7B44-AC0F074E4100}]
“AuthorizedCDFPrefix”=””
“Comments”=”
“
“Contact”=”Customer Support”
“DisplayVersion”=”19.012.20036”
“HelpLink”=hex(2):68,00,74,00,74,00,70,00,3a,00,2f,00,2f,00,77,00,77,00,77,00,\
2e,00,61,00,64,00,6f,00,62,00,65,00,2e,00,63,00,6f,00,6d,00,2f,00,73,00,75,\
00,70,00,70,00,6f,00,72,00,74,00,2f,00,6d,00,61,00,69,00,6e,00,2e,00,68,00,\
74,00,6d,00,6c,00,00,00
“HelpTelephone”=””
“InstallDate”=”20190816”
“InstallLocation”=”C:\\Program Files (x86)\\Adobe\\Acrobat Reader DC\\”
“InstallSource”=”c:\\setup\\”
“ModifyPath”=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,78,\
00,65,00,20,00,2f,00,49,00,7b,00,41,00,43,00,37,00,36,00,42,00,41,00,38,00,\
36,00,2d,00,37,00,41,00,44,00,37,00,2d,00,31,00,30,00,33,00,33,00,2d,00,37,\
00,42,00,34,00,34,00,2d,00,41,00,43,00,30,00,46,00,30,00,37,00,34,00,45,00,\
34,00,31,00,30,00,30,00,7d,00,00,00
“NoRepair”=dword:00000001
“Publisher”=”Adobe Systems Incorporated”
“Readme”=hex(2):43,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,20,\
00,46,00,69,00,6c,00,65,00,73,00,20,00,28,00,78,00,38,00,36,00,29,00,5c,00,\
41,00,64,00,6f,00,62,00,65,00,5c,00,41,00,63,00,72,00,6f,00,62,00,61,00,74,\
00,20,00,52,00,65,00,61,00,64,00,65,00,72,00,20,00,44,00,43,00,5c,00,52,00,\
65,00,61,00,64,00,6d,00,65,00,2e,00,68,00,74,00,6d,00,00,00
“Size”=””
“EstimatedSize”=dword:0007fd49
“UninstallString”=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,\
78,00,65,00,20,00,2f,00,49,00,7b,00,41,00,43,00,37,00,36,00,42,00,41,00,38,\
00,36,00,2d,00,37,00,41,00,44,00,37,00,2d,00,31,00,30,00,33,00,33,00,2d,00,\
37,00,42,00,34,00,34,00,2d,00,41,00,43,00,30,00,46,00,30,00,37,00,34,00,45,\
00,34,00,31,00,30,00,30,00,7d,00,00,00
“URLInfoAbout”=”http://www.adobe.com”
“URLUpdateInfo”=”http://helpx.adobe.com/reader.html”
“VersionMajor”=dword:00000013
“VersionMinor”=dword:0000000c
“WindowsInstaller”=dword:00000001
“Version”=dword:130c4e44
“Language”=dword:00000409
“DisplayName”=”Adobe Acrobat Reader DC”
Notes
AcroRdrDCUpd1901220036.msp
Adobe MSI and Cmd-line examples
tags: MrNetTek
Description
Amazon WorkSpaces enables you to provision virtual, cloud-based Microsoft Windows or Amazon Linux desktops for your users, known as WorkSpaces. Amazon WorkSpaces eliminates the need to procure and deploy hardware or install complex software. You can quickly add or remove users as your needs change. Users can access their virtual desktops from multiple devices or web browsers. Access your personal Windows environment from your computer using the Amazon Workspaces Client. more…
Download
New Amazon Workspaces is available here:
https://d2td7dqidlhjx7.cloudfront.net/prod/global/windows/Amazon+WorkSpaces.msi mirror
Size
40.9 MB
Silent Install
setup.msi /quiet /norestart
Install Location (10 folders, 113 files, 98.7 MB)
C:\Program Files (x86)\Amazon Web Services, Inc\Amazon WorkSpaces\
Silent Uninstall
msiexec /x{04104EB8-125A-4640-9414-ECC098361F94} /qn /norestart
Registry
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{04104EB8-125A-4640-9414-ECC098361F94}]
“AuthorizedCDFPrefix”=””
“Comments”=””
“Contact”=””
“DisplayVersion”=”2.5.9”
“HelpLink”=””
“HelpTelephone”=””
“InstallDate”=”20190816”
“InstallLocation”=””
“InstallSource”=”C:\\Users\\Demo99\\Downloads\\”
“ModifyPath”=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,78,\
00,65,00,20,00,2f,00,58,00,7b,00,30,00,34,00,31,00,30,00,34,00,45,00,42,00,\
38,00,2d,00,31,00,32,00,35,00,41,00,2d,00,34,00,36,00,34,00,30,00,2d,00,39,\
00,34,00,31,00,34,00,2d,00,45,00,43,00,43,00,30,00,39,00,38,00,33,00,36,00,\
31,00,46,00,39,00,34,00,7d,00,00,00
“NoModify”=dword:00000001
“Publisher”=”Amazon Web Services, Inc”
“Readme”=””
“Size”=””
“EstimatedSize”=dword:00018b03
“UninstallString”=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,\
78,00,65,00,20,00,2f,00,58,00,7b,00,30,00,34,00,31,00,30,00,34,00,45,00,42,\
00,38,00,2d,00,31,00,32,00,35,00,41,00,2d,00,34,00,36,00,34,00,30,00,2d,00,\
39,00,34,00,31,00,34,00,2d,00,45,00,43,00,43,00,30,00,39,00,38,00,33,00,36,\
00,31,00,46,00,39,00,34,00,7d,00,00,00
“URLInfoAbout”=””
“URLUpdateInfo”=””
“VersionMajor”=dword:00000002
“VersionMinor”=dword:00000005
“WindowsInstaller”=dword:00000001
“Version”=dword:02050009
“Language”=dword:00000409
“DisplayName”=”Amazon WorkSpaces”
App GUID
{04104EB8-125A-4640-9414-ECC098361F94}
UpgradeCode {CB7B8EA8-3D5A-4233-A9CB-31A692E24E62}
WixUIRMOption UseRM
WixAppFolder WixPerMachineFolder
WIXUI_INSTALLDIR APPLICATIONFOLDER
ALLUSERS 2
ARPNOMODIFY 1
ARPPRODUCTICON WORKSPACESICON.ICO
ApplicationFolderName Amazon Web Services, Inc\Amazon WorkSpaces
DISABLEADVTSHORTCUTS 1
REINSTALLMODE amus
MSIINSTALLPERUSER {}
INSTALL_USB 1
Manufacturer Amazon Web Services, Inc
ProductCode {04104EB8-125A-4640-9414-ECC098361F94}
ProductLanguage 1033
ProductName Amazon WorkSpaces
ProductVersion 2.5.9
DefaultUIFont WixUI_Font_Normal
WixUI_Mode Advanced
ErrorDialog ErrorDlg
SecureCustomProperties ALLUSERS;MSIINSTALLPERUSER;WIX_DOWNGRADE_DETECTED;WIX_UPGRADE_DETECTED
Notes
Download Amazon Workspaces Client for Mac
tags: MrNetTek
Description
Mozilla Firefox, or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, Mozilla Corporation. more…
Download
New Firefox is available here:
https://ftp.mozilla.org/pub/firefox/releases/68.0.2/win64/en-US/ all
Size
45.9 MB
Silent install
setup.exe -ms
Install Location (9 Folders, 88 Files, 181 MB)
C:\Program Files\Mozilla Firefox
Silent uninstall
“C:\Program Files\Mozilla Firefox\uninstall\helper.exe” /s
Registry
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mozilla Firefox 68.0.2 (x64 en-US)]
“Comments”=”Mozilla Firefox 68.0.2 (x64 en-US)”
“DisplayIcon”=”C:\\Program Files\\Mozilla Firefox\\firefox.exe,0”
“DisplayName”=”Mozilla Firefox 68.0.2 (x64 en-US)”
“DisplayVersion”=”68.0.2”
“HelpLink”=”https://support.mozilla.org”
“InstallLocation”=”C:\\Program Files\\Mozilla Firefox”
“Publisher”=”Mozilla”
“UninstallString”=”\”C:\\Program Files\\Mozilla Firefox\\uninstall\\helper.exe\””
“URLUpdateInfo”=”https://www.mozilla.org/firefox/68.0.2/releasenotes”
“URLInfoAbout”=”https://www.mozilla.org”
“NoModify”=dword:00000001
“NoRepair”=dword:00000001
“EstimatedSize”=dword:0002d555
Notes
Version 68.0.2, first offered to Release channel users on August 14, 2019
Security vulnerabilities fixed in Firefox 68
What’s in the latest Firefox update? Mozilla pitches add-ons, new enterprise group policies
MSI Property Table
tags: MrNetTek
The Parallels Management Agent shell script—InstallAgentUnattend.sh—is used to automate the Parallels Mac Management Agent installation.
This works great for on site computers, or with machines connected to VPN.
What needs more research, is line 247 in the script: pma_agent_registrator (this file is responsible for the registration portion of the setup process). I would like to figure out how to pass the web enrollment URL (example: https://DMZ.DOMAIN.COM/ParallelsMacManagement.Enrollment) to automatically enroll off site, non-VPN machines.
But…for the connected machines, the script downloads the DMG, mounts the DMG, installs the agent, enrolls the Mac, and dismounts the DMG. Honestly, it’s all pretty cool. If you decide to embed the credentials, I do recommend creating a PKG.
When the script runs, you should see this at the end:
If you have any issues, such as KDC and KRBv5 errors, check to make sure ports 8760 and 8761 are open (check your AV and firewalls)
How to test port: terminal > telnet 11.11.11.11 8760 (where the IP is your internal proxy server)
http://kb.parallels.com/en/124318 http://kb.parallels.com/en/122879 http://kb.parallels.com/en/124306
Script
#!/usr/bin/env bash ################################################################ # # Parallels Mac Management for SCCM # Mac Client Unattended Installation Script # Tested: 8/21/2019, High Sierra, Mojave # ################################################################ # Administrator Settings # PMA Agent installer image download URL PMA_AGENT_DMG_DOWNLOAD_URL=http://www.YOURWEBSITE/pma_agent.dmg # Dedicated PMA Agent registration user credentials # to authenticate with Active Directory export PMA_AGENT_REGISTRATION_USERNAME=YourUsername export PMA_AGENT_REGISTRATION_PASSWORD=YourPassword export PMA_AGENT_REGISTRATION_DOMAIN=YourDomain.com ################################################################ PMA_AGENT_DMG_LOCAL_FILENAME=/tmp/pma_agent.$RANDOM.dmg clear && printf '\e[3J' VER_PRODUCTNAME_STR="Parallels Mac Management for Microsoft SCCM" MAGT_INSTALL_DIR="/Library/Parallels" MAGT_PLIST_ID="com.parallels.pma.agent" MAGT_LAUNCHDAEMON_PLISTFILE="/Library/LaunchDaemons/com.parallels.pma.agent.launchdaemon.plist" MAGT_LAUNCHAGENT_PLISTFILE="/Library/LaunchAgents/com.parallels.pma.agent.launchagent.plist" MAGT_LAUNCH_APPINDEX_DAEMON_PLISTFILE="/Library/LaunchDaemons/com.parallels.pma.agent.launch.appindex.daemon.plist" MAGT_LAUNCH_CEP_DAEMON_PLISTFILE="/Library/LaunchDaemons/com.parallels.pma.agent.launchcep.plist" MAGT_UNATTENDED_INSTALLATION_FLAG_FILE="/tmp/pma_agent.installing.unattended" if [ $PARALLELS_INTERNAL ]; then ALLOW_UNTRUSTED_FLAG="-allowUntrusted" fi Cleanup() { hdiutil detach "/Volumes/$VER_PRODUCTNAME_STR" rm -f $PMA_AGENT_DMG_LOCAL_FILENAME rm -f $MAGT_UNATTENDED_INSTALLATION_FLAG_FILE } Log() { echo "$@" } LogError() { echo >&2 "Error: $@" } IsSystemAtLeast() { if [ -z "$SYSTEM_VERSION" ]; then local sysVerPlist="/System/Library/CoreServices/SystemVersion.plist" SYSTEM_VERSION=$(/usr/libexec/PlistBuddy -c "Print :ProductVersion" "$sysVerPlist") fi local minVer=$(printf "%04d%04d%04d%04d" $(echo "$1" | tr '.' '\n' | head -n 4)) local curVer=$(printf "%04d%04d%04d%04d" $(echo "$SYSTEM_VERSION" | tr '.' '\n' | head -n 4)) if [ $minVer -le $curVer ]; then echo YES return 0 else echo '' return 1 fi } GetFinderPid() { local userName="$1" local output local rv output=$(ps -xo user,pid,comm -u "$userName" | grep -E "^.*/Finder.app/.*/Finder(?:\s+.*)*$" | head -n 1) test "$output" || { echo "Cannot find Finder for ${userName}."; return 1; } output=$(echo "$output" | tr -s ' ' | cut -d ' ' -f 2) test "$output" || { echo "Cannot get Finder PID for ${userName}."; return 1; } echo "$output" return 0 } LaunchctlLoad() { local jobPlist="$1" local userName="$2" local bootstrapPid local jobLabel local output local userID jobLabel=$(/usr/libexec/PlistBuddy -c "Print :Label" "$jobPlist" 2>&1) (( $? )) && { LogError "Cannot read job label from $jobPlist"; LogError "$jobLabel"; return 1; } (( $EUID )) && { LogError "You must be root to perform this operation."; return 1; } if [ -z "$userName" ]; then Log "Loading $jobLabel for system..." else Log "Loading $jobLabel for user '$userName'..." fi test "$DRY_RUN" && return 0 if [ $(IsSystemAtLeast "10.11") ]; then if [ -z "$userName" ]; then output=$(launchctl bootstrap system "$jobPlist" 2>&1) else userID=$(id -u "$userName" 2>&1) (( $? )) && { LogError "$userID"; return 1; } output=$(launchctl bootstrap gui/$userID "$jobPlist" 2>&1) fi else if [ -z "$userName" ]; then output=$(launchctl load "$jobPlist" 2>&1) else bootstrapPid=$(GetFinderPid $userName) (( $? )) && { LogError "$bootstrapPid"; return 1; } output=$(launchctl bsexec "$bootstrapPid" sudo -u "$userName" launchctl load "$jobPlist" 2>&1) fi fi (( $? )) && { LogError "$output"; return 1; } Log "Job $jobLabel loaded successfully" return 0 } LaunchctlUnload() { local jobPlist="$1" local userName="$2" local bootstrapPid local jobLabel local output local userID jobLabel=$(/usr/libexec/PlistBuddy -c "Print :Label" "$jobPlist" 2>&1) (( $? )) && { LogError "Cannot read job label from $jobPlist"; LogError "$jobLabel"; return 1; } (( $EUID )) && { LogError "You must be root to perform this operation."; return 1; } if [ -z "$userName" ]; then Log "Unloading $jobLabel for system..." else Log "Unloading $jobLabel for user '$userName'..." fi test "$DRY_RUN" && return 0 if [ $(IsSystemAtLeast "10.11") ]; then if [ -z "$userName" ]; then output=$(launchctl bootout system "$jobPlist" 2>&1) else userID=$(id -u "$userName" 2>&1) (( $? )) && { LogError "$userID"; return 1; } output=$(launchctl bootout gui/$userID "$jobPlist" 2>&1) fi else if [ -z "$userName" ]; then output=$(launchctl unload "$jobPlist" 2>&1) else bootstrapPid=$(GetFinderPid $userName) (( $? )) && { LogError "$bootstrapPid"; return 1; } output=$(launchctl bsexec "$bootstrapPid" sudo -u "$userName" launchctl unload "$jobPlist" 2>&1) fi fi (( $? )) && { LogError "$output"; return 1; } Log "Job $jobLabel unloaded successfully" return 0 } StopAgents() { local users users=$(ps -xao user,comm | grep -E "^.*/pma_agent.app/.*/pma_agent_ui(?:\s+.*)*$" | tr -s ' ' | cut -d ' ' -f 1) for user in $users do LaunchctlUnload "$MAGT_LAUNCHAGENT_PLISTFILE" "$user" done } StartAgents() { local users users=$(ps -xao user,comm | grep -E "^.*/Finder.app/.*/Finder$" | grep -v grep | awk '{print $1}') for user in $users do LaunchctlLoad "$MAGT_LAUNCHAGENT_PLISTFILE" "$user" done } ############################################################################### # Main ############################################################################### trap Cleanup EXIT trap "exit 1" SIGHUP SIGINT SIGTERM SIGQUIT # Create flag file and fill with random content echo $PMA_AGENT_DMG_LOCAL_FILENAME > $MAGT_UNATTENDED_INSTALLATION_FLAG_FILE if [ $? -ne 0 ]; then LogError "Cannot create flag file '$MAGT_UNATTENDED_INSTALLATION_FLAG_FILE'" exit 1 fi Log "Downloading Mac Client installation image to $PMA_AGENT_DMG_LOCAL_FILENAME..." curl -# -o "$PMA_AGENT_DMG_LOCAL_FILENAME" "$PMA_AGENT_DMG_DOWNLOAD_URL" || exit 1 Log "Installing Mac Client..." hdiutil attach "$PMA_AGENT_DMG_LOCAL_FILENAME" || exit 1 installer -verbose -pkg "/Volumes/$VER_PRODUCTNAME_STR/$VER_PRODUCTNAME_STR.pkg" -target / ${ALLOW_UNTRUSTED_FLAG} || exit 1 Log "Waiting for postinstall script completion..." while [ -n "$(ps aux | grep "$VER_PRODUCTNAME_STR" | grep postinstall | grep -v grep)" ]; do sleep 0.1; done Log "Stop components..." test -f "$MAGT_LAUNCHAGENT_PLISTFILE" && StopAgents test -f "$MAGT_LAUNCH_APPINDEX_DAEMON_PLISTFILE" && LaunchctlUnload "$MAGT_LAUNCH_APPINDEX_DAEMON_PLISTFILE" test -f "$MAGT_LAUNCH_CEP_DAEMON_PLISTFILE" && LaunchctlUnload "$MAGT_LAUNCH_CEP_DAEMON_PLISTFILE" test -f "$MAGT_LAUNCHDAEMON_PLISTFILE" && LaunchctlUnload "$MAGT_LAUNCHDAEMON_PLISTFILE" Log "Register Mac Client..." "$MAGT_INSTALL_DIR/pma_agent.app/Contents/MacOS/pma_agent_registrator" || exit 1 Log "Start components..." LaunchctlLoad "$MAGT_LAUNCHDAEMON_PLISTFILE" || { Log "STOP"; exit 1; } LaunchctlLoad "$MAGT_LAUNCH_CEP_DAEMON_PLISTFILE" LaunchctlLoad "$MAGT_LAUNCH_APPINDEX_DAEMON_PLISTFILE" StartAgents Log "Mac Client successfully installed"
Notes
Parallels Mac Management Technical Documentation
Agent Cache:
Library > Caches > com.parallels.pma.agent
Keychain Access:
Library > Keychains > pmm-client.keychain
1 plist in Library > LaunchAgents
— com.parallels.pma.agent.launchagent.plist
3 plist in Library > LaunchDaemons
— com.parallels.pma.agent.appindex.daemon.plist
— com.parallels.pma.agent.launchcep.plist
— com.parallels.pma.agent.launchdaemon.plist
6 files in Library > Preferences
— com.parallels.pma.agent.cert.pem
— com.parallels.pma.agent.pkey.pem
— com.parallels.pma.agent.pki.cert.pem
— com.parallels.pma.agent.pki.pkey.pem
— com.parallels.pma.agent.plist {this data shows up in System Preferences > Parallels}
— com.parallels.pma.agent.sccmproxy.cert.pem
PMA Settings Location:
/Library/Application Support/Parallels/PMA_Agent
PMA APP Location:
/Library/Parallels/pma_agent.app
— Contents
—— MacOS
——— authhelper
——— pma_agent
——— pma_agent_registrator
——— pma_agent_ui
——— pma_agent_uninstaller
——— pma_crash_monitor
——— pma_fdehelper
——— pma_forwarding
——— pma_installer_helper
——— pma_report_tool
——— pmm_app_portal
——— pmm_appindex_agent
——— pmm_cep_service
——— pmmctl
Scripted unattend, by passing values into parameters:
sudo ./InstallAgentUnattended.sh http://dmz.domain.com/pma_agent.dmg UserName UserPassword UserDomain
Get Policies: /Library/Parallels/pma_agent.app/Contents/MacOS
pmmctl get-policies
Scan Updates: /Library/Parallels/pma_agent.app/Contents/MacOS
pmmctl scan-updates
Send Inventory: /Library/Parallels/pma_agent.app/Contents/MacOS
pmmctl report-hv-inventory
Uninstall PMA by APP: /Library/Parallels/pma_agent.app/Contents/MacOS/
pma_agent_uninstaller.app
or
Uninstall PMA by Shell Script:
sudo /bin/bash –с /Library/Parallels/pma_agent.app/Contents/MacOS/pma_agent_uninstaller.app/Contents/Resources/UninstallAgentScript.sh
or
#! /bin/bash VER_SHORTPRODUCTNAME_STR="Parallels Mac Management" VER_FULL_BUILD_NUMBER_STR="7.3.3.5" MAGT_LAUNCHAGENT_PLISTFILE="/Library/LaunchAgents/com.parallels.pma.agent.launchagent.plist" MAGT_LAUNCHDAEMON_PLISTFILE="/Library/LaunchDaemons/com.parallels.pma.agent.launchdaemon.plist" MAGT_LAUNCH_APPINDEX_DAEMON_PLISTFILE="/Library/LaunchDaemons/com.parallels.pma.agent.launch.appindex.daemon.plist" MAGT_LAUNCH_CEP_DAEMON_PLISTFILE="/Library/LaunchDaemons/com.parallels.pma.agent.launchcep.plist" MAGT_PLISTFILE="/Library/Preferences/com.parallels.pma.agent.plist" MAGT_SUPPORT_DIR="/Library/Application Support/Parallels/PMA_Agent" MAGT_KEYCHAIN_FILE="/Library/Keychains/pmm-client.keychain" MAGT_CACHE_DIR="/Library/Caches/com.parallels.pma.agent" MAGT_INSTALL_DIR="/Library/Parallels" MAGT_APP_PORTAL_INSTALL_DIR="/Applications" MAGT_APP_PORTAL_BUNDLE_NAME="Parallels Application Portal.app" MAC_AGENT_SUCATALOG_URL="SuCatalogUrl" PMM_CLIENT_BUNDLE_NAME="pma_agent.app" SOFTWARE_UPDATE_TOOL_PATH="/usr/sbin/softwareupdate" SOFTWARE_UPDATE_PREFERENCES_PLIST="/Library/Preferences/com.apple.SoftwareUpdate.plist" PMM_PREFERENCE_PANE_PATH="/Library/PreferencePanes/PRLPmmPreferencePane.prefPane" MAGT_PROBLEM_REPORTS_DIR="/Users/Shared/Parallels/Problem Reports" DSCL_USERS_CACHE_PATH="/var/db/dslocal/nodes/Default/users" SCRIPT_NAME=`basename "${0}"` SCRIPT_DIR=`dirname "${0}"` SCRIPT_TITLE="$VER_SHORTPRODUCTNAME_STR v$VER_FULL_BUILD_NUMBER_STR - Uninstall Mac Client" Log() { echo "${SCRIPT_NAME%.*}: $@" test -z "$ROOT_PATH" && logger -p install.info -t "$VER_SHORTPRODUCTNAME_STR" "$@" return 0 } LogError() { echo >&2 "${SCRIPT_NAME%.*}:Error: $@" test -z "$ROOT_PATH" && logger -p install.info -t "$VER_SHORTPRODUCTNAME_STR" "Error: $@" return 0 } RemoveFile() { local path="$(CleanPath "$ROOT_PATH/$1")" local fileName="$(basename "$path")" local dirPath="$(dirname "$path")" while IFS= read -r -d '' file; do Log "Removing file $file..." test "$DRY_RUN" && continue local output=$(rm -f "$file" 2>&1) if [ $? -ne 0 ]; then LogError "Cannot delete file: $file" LogError "$output" fi done < <(find "$dirPath" -maxdepth 1 -type f -name "$fileName" -print0 2>/dev/null) return 0 } RemoveDir() { local path="$(CleanPath "$ROOT_PATH/$1")" local fileName="$(basename "$path")" local dirPath="$(dirname "$path")" while IFS= read -r -d '' file; do Log "Removing directory $file..." test "$DRY_RUN" && continue local output=$(rm -rf "$file" 2>&1) if [ $? -ne 0 ]; then LogError "Cannot delete file: $file" LogError "$output" fi done < <(find "$dirPath" -maxdepth 1 -type d -name "$fileName" -print0 2>/dev/null) return 0 } # # Checks is specified directory empty. Ignores .DS_Store file. # IsDirEmpty() { local path="$(CleanPath "$ROOT_PATH/$1")" test ! -d "$path" && return 1 find "$path" -maxdepth 1 -mindepth 1 -not -name ".DS_Store" &>/dev/null if [ $? -eq 0 ]; then echo YES return 0 else echo '' return 1 fi } # # Removes all redundant '/' from path # CleanPath() { shopt -s extglob echo "${1//+(\/)//}" shopt -u extglob } # # Prints script usage information # PrintUsage() { read -d '' help <<- EOF Usage: $SCRIPT_NAME [--root <path>] [--dry-run] EOF LogError "$help" } IsSystemAtLeast() { if [ -z "$SYSTEM_VERSION" ]; then SYSTEM_VERSION=$(/usr/bin/sw_vers -productVersion) fi local minVer=$(printf "%04d%04d%04d%04d" $(echo "$1" | tr '.' '\n' | head -n 4)) local curVer=$(printf "%04d%04d%04d%04d" $(echo "$SYSTEM_VERSION" | tr '.' '\n' | head -n 4)) if [ $minVer -le $curVer ]; then echo YES return 0 else echo '' return 1 fi } # Source launchctl helpers . "$SCRIPT_DIR/launchctl_utils.sh" ############################################################################### # Main ############################################################################### Log "${SCRIPT_TITLE} ("`date`")" # # Parse command line arguments # while [[ $# > 0 ]] do key="$1" case $key in --root) ROOT_PATH="$2" shift ;; --dry-run) DRY_RUN="yes" ;; *) LogError "Unrecognized argument \"$key\"" PrintUsage exit 1 ;; esac shift done # # Check required arguments # if [ "${ROOT_PATH+yes}" ]; then if [ -z "$ROOT_PATH" ]; then LogError "Argument --root cannot be empty" exit 1 elif [ ! -d "$ROOT_PATH" ]; then LogError "Directory not found: $ROOT_PATH" exit 1 fi fi if [ "$EUID" -ne 0 ]; then LogError "Requires admin privileges, please re-run as root via sudo" exit 1 fi # # Stop services # if [ -z "$ROOT_PATH" ]; then if [ -f "$MAGT_LAUNCHAGENT_PLISTFILE" ]; then # Stop all instances of MacClient agent for userName in $(ps -xao user,comm | grep -E "^.*/pma_agent.app/.*/pma_agent_ui(?:\s+.*)*$" | tr -s ' ' | cut -d ' ' -f 1) do LaunchctlUnload "$MAGT_LAUNCHAGENT_PLISTFILE" "$userName" done fi test -f "$MAGT_LAUNCHDAEMON_PLISTFILE" && LaunchctlUnload "$MAGT_LAUNCHDAEMON_PLISTFILE" test -f "$MAGT_LAUNCH_CEP_DAEMON_PLISTFILE" && LaunchctlUnload "$MAGT_LAUNCH_CEP_DAEMON_PLISTFILE" test -f "$MAGT_LAUNCH_APPINDEX_DAEMON_PLISTFILE" && LaunchctlUnload "$MAGT_LAUNCH_APPINDEX_DAEMON_PLISTFILE" fi # # Remove services configuration plists # RemoveFile "$MAGT_LAUNCHDAEMON_PLISTFILE" RemoveFile "$MAGT_LAUNCHAGENT_PLISTFILE" RemoveFile "$MAGT_LAUNCH_APPINDEX_DAEMON_PLISTFILE" RemoveFile "$MAGT_LAUNCH_CEP_DAEMON_PLISTFILE" # # Remove Application Support data # RemoveDir "$MAGT_SUPPORT_DIR" # # Remove per-user Application Support data # for userPlist in "$(CleanPath "$ROOT_PATH/$DSCL_USERS_CACHE_PATH")"/[!_]*.plist do test -e "$userPlist" || break userName=$(/usr/libexec/PlistBuddy -c "Print :name:0" "$userPlist" 2>&1) if [ $? -ne 0 ]; then LogError "$userName" continue fi userUid=$(/usr/libexec/PlistBuddy -c "Print :uid:0" "$userPlist" 2>&1) if [ $? -ne 0 ]; then continue; fi # Local user has UIDs in range (500;1000) or 0 (root) if [[ "$userUid" != 0 && ( "$userUid" -le 500 || "$userUid" -ge 1000 ) ]]; then continue; fi userHome=$(/usr/libexec/PlistBuddy -c "Print :home:0" "$userPlist" 2>&1) if [ $? -ne 0 ]; then continue; fi RemoveDir "$userHome/$MAGT_SUPPORT_DIR" done # # Revert Software Update catalog URL if need # if [ -z "$ROOT_PATH" ]; then expectedURL=$(/usr/libexec/PlistBuddy -c "Print :$MAC_AGENT_SUCATALOG_URL" "$MAGT_PLISTFILE" 2>/dev/null) actualURL=$(/usr/libexec/PlistBuddy -c "Print :CatalogURL" "$SOFTWARE_UPDATE_PREFERENCES_PLIST" 2>/dev/null) if [[ "$actualURL" && "$actualURL" == "$expectedURL" ]]; then if [ $(IsSystemAtLeast "10.9") ]; then $($SOFTWARE_UPDATE_TOOL_PATH --clear-catalog) else $(/usr/libexec/PlistBuddy -c "Delete :CatalogURL" "$SOFTWARE_UPDATE_PREFERENCES_PLIST") fi fi fi # Remove preferences RemoveFile "${MAGT_PLISTFILE/%plist/*}" # Remove keychain file RemoveFile "$MAGT_KEYCHAIN_FILE" # Remove cache directory RemoveDir "$MAGT_CACHE_DIR" # Remove problem reports RemoveFile "$MAGT_PROBLEM_REPORTS_DIR/PmaProblemReport*" # TODO: remove dirs up to "/Users/Shared/Parallels" if empty # Remove MacClient bundle RemoveDir "$MAGT_INSTALL_DIR/$PMM_CLIENT_BUNDLE_NAME" if [ $(IsDirEmpty "$MAGT_INSTALL_DIR") ]; then RemoveDir "$MAGT_INSTALL_DIR" fi # Remove AppPortal bundle RemoveDir "$MAGT_APP_PORTAL_INSTALL_DIR/$MAGT_APP_PORTAL_BUNDLE_NAME" # Remove Preferences Pane bundle RemoveDir "$PMM_PREFERENCE_PANE_PATH" # Remove install info RemoveFile "/var/db/receipts/com.parallels.pkg.pma.agent.*" Log "Completed"
echo $TMPDIR
The Parallels Mac Management log files are located in the following directories:
• Windows computer running Parallels Configuration Manager Proxy: %Windir%\Logs; %Windir%\Logs\pmm
• Windows computer running Parallels OS X Software Update Point: %Windir%\Logs\pmm
• Windows computer running Configuration Manager console: %Windir%\Logs
• OS X (Parallels Mac Client): /Library/Logs/
tags: MrNetTek
Problem:
Solution:
This works by changing the Show Document Gallery when opening Word from selected, to not selected. The command could also be added to your scripts in packaging, which would look something like this:
#!/bin/bash sudo installer -pkg "serializer.pkg" -target / -verbose >> log.txt sudo installer -pkg "office.pkg" -target / -verbose >> log.txt defaults write com.microsoft.office ShowDocStageOnLaunch FALSE
Notes
tags: MrNetTek