├── .gitignore
├── BreakdownGraphic.png
├── LICENSE
├── Lync
├── MSLync.install.recipe
├── MSLync.munki.recipe
├── MSLync.pkg.recipe
└── MSLyncURLandUpdateInfoProvider.py
├── MAU
├── MAU.install.recipe
├── MAU.lanrev.recipe
├── MAU.munki.recipe
├── MAU.pkg.recipe
└── MAUURLandUpdateInfoProvider.py
├── Office2016-IndividualApps
├── EA-OfficeAppVersion.xml
├── JSS-README.md
├── MSO2016License.jss.recipe
├── MSOffice2016URLandUpdateInfoProvider.py
├── MicrosoftExcel.png
├── MicrosoftExcel2016.download.recipe
├── MicrosoftExcel2016.ds.recipe
├── MicrosoftExcel2016.install.recipe
├── MicrosoftExcel2016.jss.recipe
├── MicrosoftExcel2016.lanrev.recipe
├── MicrosoftExcel2016.munki.recipe
├── MicrosoftOneNote2016.download.recipe
├── MicrosoftOneNote2016.ds.recipe
├── MicrosoftOneNote2016.lanrev.recipe
├── MicrosoftOneNote2016.munki.recipe
├── MicrosoftOutlook.png
├── MicrosoftOutlook2016.download.recipe
├── MicrosoftOutlook2016.ds.recipe
├── MicrosoftOutlook2016.install.recipe
├── MicrosoftOutlook2016.jss.recipe
├── MicrosoftOutlook2016.lanrev.recipe
├── MicrosoftOutlook2016.munki.recipe
├── MicrosoftPowerPoint.png
├── MicrosoftPowerPoint2016.download.recipe
├── MicrosoftPowerPoint2016.ds.recipe
├── MicrosoftPowerPoint2016.install.recipe
├── MicrosoftPowerPoint2016.jss.recipe
├── MicrosoftPowerPoint2016.lanrev.recipe
├── MicrosoftPowerPoint2016.munki.recipe
├── MicrosoftWord.png
├── MicrosoftWord2016.download.recipe
├── MicrosoftWord2016.ds.recipe
├── MicrosoftWord2016.install.recipe
├── MicrosoftWord2016.jss.recipe
├── MicrosoftWord2016.lanrev.recipe
├── MicrosoftWord2016.munki.recipe
├── P-OtherTrigger.xml
├── P-SelfService.xml
├── S-Standard.xml
├── SG-ExtendedAttributeOffice.xml
├── manual_trigger_office.sh
└── payload
│ └── .gitignore
├── Office2016Suite-SKUless
├── Office2016.png
├── Office2016SuiteSKUless.download.recipe
├── Office2016SuiteSKUless.ds.recipe
├── Office2016SuiteSKUless.install.recipe
├── Office2016SuiteSKUless.jss.recipe
├── Office2016SuiteSKUless.lanrev.recipe
├── Office2016SuiteSKUless.munki.recipe
├── OfficeSuiteSKULessVersionProvider.py
├── PolicyTemplate.xml
└── SmartGroupTemplate.xml
├── OneDrive-Standalone
├── OneDrive.pkg.recipe
└── OneDrive.png
├── README.md
└── SkypeForBusiness
├── SkypeForBusiness.munki.recipe
├── SkypeForBusiness.pkg.recipe
└── SkypeForBusiness.png
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | # Byte-compiled / optimized / DLL files
3 | __pycache__/
4 | *.py[cod]
5 | *$py.class
6 |
7 | # C extensions
8 | *.so
9 |
10 | # Distribution / packaging
11 | .Python
12 | env/
13 | build/
14 | develop-eggs/
15 | dist/
16 | downloads/
17 | eggs/
18 | .eggs/
19 | lib/
20 | lib64/
21 | parts/
22 | sdist/
23 | var/
24 | *.egg-info/
25 | .installed.cfg
26 | *.egg
27 |
28 | # PyInstaller
29 | # Usually these files are written by a python script from a template
30 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
31 | *.manifest
32 | *.spec
33 |
34 | # Installer logs
35 | pip-log.txt
36 | pip-delete-this-directory.txt
37 |
38 | # Unit test / coverage reports
39 | htmlcov/
40 | .tox/
41 | .coverage
42 | .coverage.*
43 | .cache
44 | nosetests.xml
45 | coverage.xml
46 | *,cover
47 | .hypothesis/
48 |
49 | # Translations
50 | *.mo
51 | *.pot
52 |
53 | # Django stuff:
54 | *.log
55 |
56 | # Sphinx documentation
57 | docs/_build/
58 |
59 | # PyBuilder
60 | target/
61 |
62 | # Editor-related
63 | .idea/
64 |
--------------------------------------------------------------------------------
/BreakdownGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arubdesu/microsoft-recipes/677aaa3a8b82f25fbb7c130177095d6c7841a03f/BreakdownGraphic.png
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "{}"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright {yyyy} {name of copyright owner}
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/Lync/MSLync.install.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Installs the current release version of MSLync.
7 | Identifier
8 | com.github.microsoft-recipes.install.LyncInstaller
9 | Input
10 |
11 |
12 | MinimumVersion
13 | 0.4.0
14 | ParentRecipe
15 | com.github.microsoft-recipes.pkg.LyncInstaller
16 | Process
17 |
18 |
19 | Processor
20 | Installer
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Lync/MSLync.munki.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Finds latest Lync installer, downloads the disk image and extracts the pkg.
7 | Set VERSION to a specific version number to download that version instead.
8 | Set CULTURE_CODE to a different value to get a different localization. See
9 | http://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx for a table of Culture Codes.
10 | Identifier
11 | com.github.microsoft-recipes.munki.LyncInstaller
12 | Input
13 |
14 | NAME
15 | MSLync
16 | MUNKI_REPO_SUBDIR
17 | apps/Office2011
18 | VERSION
19 | latest
20 | CULTURE_CODE
21 | 0409
22 | pkginfo
23 |
24 | blocking_applications
25 |
26 | MSN Messenger
27 | Microsoft Lync
28 | Microsoft Error Reporting
29 | Microsoft Communicator
30 | Microsoft Messenger
31 |
32 | catalogs
33 |
34 | testing
35 |
36 |
37 |
38 | MinimumVersion
39 | 0.3.1
40 | Process
41 |
42 |
43 | Processor
44 | MSLyncURLandUpdateInfoProvider
45 | Arguments
46 |
47 | culture_code
48 | %CULTURE_CODE%
49 | munki_update_name
50 | %NAME%
51 | version
52 | %VERSION%
53 |
54 |
55 |
56 | Processor
57 | URLDownloader
58 |
59 |
60 | Processor
61 | CodeSignatureVerifier
62 | Arguments
63 |
64 | input_path
65 | %pathname%/Lync Installer.pkg
66 | expected_authority_names
67 |
68 | Developer ID Installer: Microsoft Corporation
69 | Developer ID Certification Authority
70 | Apple Root CA
71 |
72 |
73 |
74 |
75 | Comment
76 | Merge input pkginfo and additional_pkginfo generated by MSLyncURLandUpdateInfoProvider
77 | Processor
78 | MunkiPkginfoMerger
79 |
80 |
81 | Arguments
82 |
83 | pkg_path
84 | %pathname%
85 | repo_subdirectory
86 | %MUNKI_REPO_SUBDIR%
87 |
88 | Processor
89 | MunkiImporter
90 |
91 |
92 |
93 |
94 |
--------------------------------------------------------------------------------
/Lync/MSLync.pkg.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Finds latest Lync installer, downloads the disk image and extracts the pkg.
7 | Set VERSION to a specific version number to download that version instead.
8 | Set CULTURE_CODE to a different value to get a different localization. See
9 | http://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx for a table of Culture Codes.
10 | Identifier
11 | com.github.arubdesu.pkg.LyncInstaller
12 | MinimumVersion
13 | 0.3.1
14 | Input
15 |
16 | NAME
17 | MSLync
18 | VERSION
19 | latest
20 | CULTURE_CODE
21 | 0409
22 |
23 | Process
24 |
25 |
26 | Processor
27 | MSLyncURLandUpdateInfoProvider
28 | Arguments
29 |
30 | culture_code
31 | %CULTURE_CODE%
32 | version
33 | %VERSION%
34 |
35 |
36 |
37 | Processor
38 | URLDownloader
39 |
40 |
41 | Processor
42 | EndOfCheckPhase
43 |
44 |
45 | Processor
46 | CodeSignatureVerifier
47 | Arguments
48 |
49 | input_path
50 | %pathname%/Lync Installer.pkg
51 | expected_authority_names
52 |
53 | Developer ID Installer: Microsoft Corporation
54 | Developer ID Certification Authority
55 | Apple Root CA
56 |
57 |
58 |
59 |
60 | Processor
61 | PkgCopier
62 | Arguments
63 |
64 | source_pkg
65 | %pathname%/%pkg_name%
66 |
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/Lync/MSLyncURLandUpdateInfoProvider.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | #
3 | # Copyright 2016 Allister Banks, mostly repurposed from code by Greg Neagle
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 |
18 | import plistlib
19 | import urllib2
20 |
21 | from distutils.version import LooseVersion
22 | from operator import itemgetter
23 |
24 | from autopkglib import Processor, ProcessorError
25 |
26 |
27 | __all__ = ["MSLyncURLandUpdateInfoProvider"]
28 |
29 | CULTURE_CODE = "0409"
30 | BASE_URL = "https://www.microsoft.com/mac/autoupdate/%sUCCP14.xml"
31 | MUNKI_UPDATE_NAME = "Lync_Installer"
32 |
33 | class MSLyncURLandUpdateInfoProvider(Processor):
34 | """Provides a download URL for the most recent version of MS Lync."""
35 | input_variables = {
36 | "culture_code": {
37 | "required": False,
38 | "description": ("See "
39 | "http://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx"
40 | " for a table of CultureCodes Defaults to 0409, which "
41 | "corresponds to en-US (English - United States)"),
42 | },
43 | "base_url": {
44 | "required": False,
45 | "description": ("Default is %s. If this is given, culture_code "
46 | "is ignored." % (BASE_URL % CULTURE_CODE)),
47 | },
48 | "version": {
49 | "required": False,
50 | "description": "Update version number. Defaults to latest.",
51 | },
52 | }
53 | output_variables = {
54 | "url": {
55 | "description": "URL to the latest Lync installer.",
56 | },
57 | "pkg_name": {
58 | "description": "Name of the package within the disk image.",
59 | },
60 | "additional_pkginfo": {
61 | "description":
62 | "Some pkginfo fields extracted from the Microsoft metadata.",
63 | },
64 | "display_name": {
65 | "description":
66 | "The name of the package that includes the version.",
67 | },
68 | }
69 | description = __doc__
70 |
71 | def sanityCheckExpectedTriggers(self, item):
72 | """Raises an exeception if the Trigger Condition or
73 | Triggers for an update don't match what we expect.
74 | Protects us if these change in the future."""
75 | if not item.get("Trigger Condition") == ["and", "Lync"]:
76 | raise ProcessorError(
77 | "Unexpected Trigger Condition in item %s: %s"
78 | % (item["Title"], item["Trigger Condition"]))
79 | if not "Lync" in item.get("Triggers", {}):
80 | raise ProcessorError(
81 | "Missing expected MCP Trigger in item %s" % item["Title"])
82 |
83 | def getRequiresFromUpdateItem(self, item):
84 | """Attempts to determine what earlier updates are
85 | required by this update"""
86 |
87 | def compare_versions(a, b):
88 | """Internal comparison function for use with sorting"""
89 | return cmp(LooseVersion(a), LooseVersion(b))
90 |
91 | self.sanityCheckExpectedTriggers(item)
92 | munki_update_name = self.env.get("munki_update_name", MUNKI_UPDATE_NAME)
93 | mcp_versions = item.get(
94 | "Triggers", {}).get("Lync", {}).get("Versions", [])
95 | if not mcp_versions:
96 | return None
97 | # Versions array is already sorted in current 0409MSOf14.xml,
98 | # may be no need to sort; but we should just to be safe...
99 | mcp_versions.sort(compare_versions)
100 | if mcp_versions[0] == "14.0.0":
101 | # works with original Office release, so no requires array
102 | return None
103 | return ["%s-%s" % (munki_update_name, mcp_versions[0])]
104 |
105 | def getInstallsItems(self, item):
106 | """Attempts to parse the Triggers to create an installs item"""
107 | self.sanityCheckExpectedTriggers(item)
108 | triggers = item.get("Triggers", {})
109 | paths = [triggers[key].get("File") for key in triggers.keys()]
110 | if "Contents/Info.plist" in paths:
111 | # use the apps info.plist as installs item
112 | installs_item = {
113 | "CFBundleShortVersionString": self.getVersion(item),
114 | "CFBundleVersion": self.getVersion(item),
115 | "path": ("/Applications/Lync/"
116 | "Contents/Info.plist"),
117 | "type": "bundle",
118 | "version_comparison_key": "CFBundleShortVersionString"
119 | }
120 | return [installs_item]
121 | return None
122 |
123 | def getVersion(self, item):
124 | """Extracts the version of the update item."""
125 | # currently relies on the item having a title in the format
126 | # "Lync x.y.z Update"
127 | TITLE_START = "Lync "
128 | TITLE_END = " Update"
129 | title = item.get("Title", "")
130 | version_str = title.replace(TITLE_START, "").replace(TITLE_END, "")
131 | return version_str
132 |
133 | def valueToOSVersionString(self, value):
134 | """Converts a value to an OS X version number"""
135 | version_str = ''
136 | if isinstance(value, int):
137 | version_str = hex(value)[2:]
138 | elif isinstance(value, basestring):
139 | if value.startswith('0x'):
140 | version_str = value[2:]
141 | # OS versions are encoded as hex:
142 | # 4184 = 0x1058 = 10.5.8
143 | # not sure how 10.4.11 would be encoded;
144 | # guessing 0x104B ?
145 | major = 0
146 | minor = 0
147 | patch = 0
148 | try:
149 | if len(version_str) == 1:
150 | major = int(version_str[0])
151 | if len(version_str) > 1:
152 | major = int(version_str[0:2])
153 | if len(version_str) > 2:
154 | minor = int(version_str[2], 16)
155 | if len(version_str) > 3:
156 | patch = int(version_str[3], 16)
157 | except ValueError:
158 | raise ProcessorError("Unexpected value in version: %s" % value)
159 | return "%s.%s.%s" % (major, minor, patch)
160 |
161 | def get_lyncInstaller_info(self):
162 | """Gets info about a Lync installer from MS metadata."""
163 | if "base_url" in self.env:
164 | base_url = self.env["base_url"]
165 | else:
166 | culture_code = self.env.get("culture_code", CULTURE_CODE)
167 | base_url = BASE_URL % culture_code
168 | version_str = self.env.get("version")
169 | if not version_str:
170 | version_str = "latest"
171 | # Get metadata URL
172 | req = urllib2.Request(base_url)
173 | # Add the MAU User-Agent, since MAU feed server seems to explicitly block
174 | # a User-Agent of 'Python-urllib/2.7' - even a blank User-Agent string
175 | # passes.
176 | req.add_header("User-Agent",
177 | "Microsoft%20AutoUpdate/3.0.2 CFNetwork/720.2.4 Darwin/14.1.0 (x86_64)")
178 | try:
179 | f = urllib2.urlopen(req)
180 | data = f.read()
181 | f.close()
182 | except BaseException as err:
183 | raise ProcessorError("Can't download %s: %s" % (base_url, err))
184 |
185 | metadata = plistlib.readPlistFromString(data)
186 | if version_str == "latest":
187 | # Lync 'update' metadata is a list of dicts.
188 | # we need to sort by date.
189 | sorted_metadata = sorted(metadata, key=itemgetter('Date'))
190 | # choose the last item, which should be most recent.
191 | item = sorted_metadata[-1]
192 | else:
193 | # we've been told to find a specific version. Unfortunately, the
194 | # Lync updates metadata items don't have a version attibute.
195 | # The version is only in text in the update's Title. So we look for
196 | # that...
197 | # Titles are in the format "Lync x.y.z Update"
198 | padded_version_str = " " + version_str + " "
199 | matched_items = [item for item in metadata
200 | if padded_version_str in item["Title"]]
201 | if len(matched_items) != 1:
202 | raise ProcessorError(
203 | "Could not find version %s in update metadata. "
204 | "Updates that are available: %s"
205 | % (version_str, ", ".join(["'%s'" % item["Title"]
206 | for item in metadata])))
207 | item = matched_items[0]
208 |
209 | self.env["url"] = item["Location"]
210 | self.env["pkg_name"] = item["Payload"]
211 | self.output("Found URL %s" % self.env["url"])
212 | self.output("Got update: '%s'" % item["Title"])
213 | # now extract useful info from the rest of the metadata that could
214 | # be used in a pkginfo
215 | pkginfo = {}
216 | pkginfo["description"] = "%s" % item["Short Description"]
217 | pkginfo["display_name"] = item["Title"]
218 | max_os = self.valueToOSVersionString(item['Max OS'])
219 | min_os = self.valueToOSVersionString(item['Min OS'])
220 | if max_os != "0.0.0":
221 | pkginfo["maximum_os_version"] = max_os
222 | if min_os != "0.0.0":
223 | pkginfo["minimum_os_version"] = min_os
224 | installs_items = self.getInstallsItems(item)
225 | if installs_items:
226 | pkginfo["installs"] = installs_items
227 | requires = self.getRequiresFromUpdateItem(item)
228 | if requires:
229 | pkginfo["requires"] = requires
230 | self.output(
231 | "Update requires previous update version %s"
232 | % requires[0].split("-")[1])
233 |
234 | pkginfo['name'] = self.env.get("munki_update_name", MUNKI_UPDATE_NAME)
235 | self.env["additional_pkginfo"] = pkginfo
236 | self.env["display_name"] = pkginfo["display_name"]
237 | self.output("Additional pkginfo: %s" % self.env["additional_pkginfo"])
238 |
239 | def main(self):
240 | """Get information about an update"""
241 | self.get_lyncInstaller_info()
242 |
243 |
244 | if __name__ == "__main__":
245 | processor = MSLyncURLandUpdateInfoProvider()
246 | processor.execute_shell()
247 |
--------------------------------------------------------------------------------
/MAU/MAU.install.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Installs the current release version of Microsoft AutoUpdate (MAU).
7 | Identifier
8 | com.github.autopkg.microsoft-recipes.install.MAU
9 | Input
10 |
11 |
12 | MinimumVersion
13 | 0.4.1
14 | ParentRecipe
15 | com.github.autopkg.microsoft-recipes.pkg.MAU
16 | Process
17 |
18 |
19 | Processor
20 | Installer
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/MAU/MAU.lanrev.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Finds latest Microsoft AutoUpdate (MAU) installer, downloads the pkg and uploads to LANrev
7 | Identifier
8 | com.github.autopkg.microsoft-recipes.lanrev.MAU
9 | Input
10 |
11 | CULTURE_CODE
12 | 0409
13 |
14 | MinimumVersion
15 | 0.4.2
16 | ParentRecipe
17 | com.github.autopkg.microsoft-recipes.pkg.MAU
18 | Process
19 |
20 |
21 | Arguments
22 |
23 | dest_payload_path
24 | %RECIPE_CACHE_DIR%/%display_name%.amsdpackages
25 | import_pkg_to_servercenter
26 |
27 | sdpackages_ampkgprops_path
28 | %RECIPE_DIR%/%NAME%-Defaults.ampkgprops
29 | source_payload_path
30 | %pathname%
31 |
32 | Processor
33 | com.github.autopkg.microsoft.jbaker10.LANrevImporter/LANrevImporter
34 | SharedProcessorRepoURL
35 | https://github.com/jbaker10/LANrevImporter
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/MAU/MAU.munki.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Finds latest Microsoft AutoUpdate (MAU) installer, downloads the pkg. Set CULTURE_CODE to a different
7 | value to get a different localization. See http://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx
8 | for a table of Culture Codes.
9 | Identifier
10 | com.github.autopkg.microsoft-recipes.munki.MAU
11 | Input
12 |
13 | NAME
14 | MAU
15 | MUNKI_REPO_SUBDIR
16 | apps/Office2011
17 | CULTURE_CODE
18 | 0409
19 | pkginfo
20 |
21 | blocking_applications
22 |
23 | Microsoft AutoUpdate
24 |
25 | catalogs
26 |
27 | testing
28 |
29 |
30 |
31 | MinimumVersion
32 | 0.4.1
33 | Process
34 |
35 |
36 | Processor
37 | MAUURLandUpdateInfoProvider
38 | Arguments
39 |
40 | culture_code
41 | %CULTURE_CODE%
42 | munki_update_name
43 | %NAME%
44 |
45 |
46 |
47 | Processor
48 | URLDownloader
49 |
50 |
51 | Processor
52 | EndOfCheckPhase
53 |
54 |
55 | Processor
56 | CodeSignatureVerifier
57 | Arguments
58 |
59 | input_path
60 | %pathname%
61 | expected_authority_names
62 |
63 | Developer ID Installer: Microsoft Corporation (UBF8T346G9)
64 | Developer ID Certification Authority
65 | Apple Root CA
66 |
67 |
68 |
69 |
70 | Comment
71 | Merge input pkginfo and additional_pkginfo generated by MAUURLandUpdateInfoProvider
72 | Processor
73 | MunkiPkginfoMerger
74 |
75 |
76 | Arguments
77 |
78 | pkg_path
79 | %pathname%
80 | repo_subdirectory
81 | %MUNKI_REPO_SUBDIR%
82 |
83 | Processor
84 | MunkiImporter
85 |
86 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/MAU/MAU.pkg.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Finds latest Microsoft AutoUpdate (MAU) installer, downloads the pkg.
7 | Identifier
8 | com.github.autopkg.microsoft-recipes.pkg.MAU
9 | MinimumVersion
10 | 0.4.1
11 | Input
12 |
13 | NAME
14 | MSMAU
15 | CULTURE_CODE
16 | 0409
17 |
18 | Process
19 |
20 |
21 | Processor
22 | MAUURLandUpdateInfoProvider
23 | Arguments
24 |
25 | culture_code
26 | %CULTURE_CODE%
27 |
28 |
29 |
30 | Processor
31 | URLDownloader
32 |
33 |
34 | Processor
35 | EndOfCheckPhase
36 |
37 |
38 | Processor
39 | CodeSignatureVerifier
40 | Arguments
41 |
42 | input_path
43 | %pathname%
44 | expected_authority_names
45 |
46 | Developer ID Installer: Microsoft Corporation (UBF8T346G9)
47 | Developer ID Certification Authority
48 | Apple Root CA
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/MAU/MAUURLandUpdateInfoProvider.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | #
3 | # Copyright 2016 Allister Banks, wholesale lifted from code by Greg Neagle
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 |
18 | import plistlib
19 | import urllib2
20 |
21 | from operator import itemgetter
22 |
23 | from autopkglib import Processor, ProcessorError
24 |
25 |
26 | __all__ = ["MAUURLandUpdateInfoProvider"]
27 |
28 | CULTURE_CODE = "0409"
29 | BASE_URL = "https://www.microsoft.com/mac/autoupdate/%sMSau03.xml"
30 | MUNKI_UPDATE_NAME = "Microsoft AutoUpdate"
31 |
32 | class MAUURLandUpdateInfoProvider(Processor):
33 | """Provides a download URL for the most recent version of MAU."""
34 | input_variables = {
35 | "culture_code": {
36 | "required": False,
37 | "description": ("See "
38 | "http://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx"
39 | " for a table of CultureCodes Defaults to 0409, which "
40 | "corresponds to en-US (English - United States)"),
41 | },
42 | "base_url": {
43 | "required": False,
44 | "description": ("Default is %s. If this is given, culture_code "
45 | "is ignored." % (BASE_URL % CULTURE_CODE)),
46 | },
47 | }
48 | output_variables = {
49 | "url": {
50 | "description": "URL to the latest MAU installer.",
51 | },
52 | "additional_pkginfo": {
53 | "description":
54 | "Some pkginfo fields extracted from the Microsoft metadata.",
55 | },
56 | "display_name": {
57 | "description":
58 | "The name of the package that includes the version.",
59 | },
60 | }
61 | description = __doc__
62 |
63 | def sanityCheckExpectedTriggers(self, item):
64 | """Raises an exeception if the Trigger Condition or
65 | Triggers for an update don't match what we expect.
66 | Protects us if these change in the future."""
67 | if not item.get("Trigger Condition") == ["and", "Registered File"]:
68 | raise ProcessorError(
69 | "Unexpected Trigger Condition in item %s: %s"
70 | % (item["Title"], item["Trigger Condition"]))
71 |
72 | def getInstallsItems(self, item):
73 | """Attempts to parse the Triggers to create an installs item"""
74 | self.sanityCheckExpectedTriggers(item)
75 | triggers = item.get("Triggers", {})
76 | paths = [triggers[key].get("File") for key in triggers.keys()]
77 | if "Contents/Info.plist" in paths:
78 | # use the apps info.plist as installs item
79 | installs_item = {
80 | "CFBundleShortVersionString": self.getVersion(item),
81 | "CFBundleVersion": self.getVersion(item),
82 | "path": ("/Library/Application Support/"
83 | "Microsoft/MAU2.0/"
84 | "Microsoft AutoUpdate.app/"
85 | "Contents/Info.plist"),
86 | "type": "bundle",
87 | "version_comparison_key": "CFBundleShortVersionString"
88 | }
89 | return [installs_item]
90 | return None
91 |
92 | def getVersion(self, item):
93 | """Extracts the version of the update item."""
94 | # currently relies on the item having a title in the format
95 | # "Microsoft AutoUpdate x.y.z "
96 | title = item.get("Title", "")
97 | version_str = title[21:]
98 | return version_str
99 |
100 | def valueToOSVersionString(self, value):
101 | """Converts a value to an OS X version number"""
102 | version_str = ''
103 | if isinstance(value, int):
104 | version_str = hex(value)[2:]
105 | elif isinstance(value, basestring):
106 | if value.startswith('0x'):
107 | version_str = value[2:]
108 | # OS versions are encoded as hex:
109 | # 4184 = 0x1058 = 10.5.8
110 | # not sure how 10.4.11 would be encoded;
111 | # guessing 0x104B ?
112 | major = 0
113 | minor = 0
114 | patch = 0
115 | try:
116 | if len(version_str) == 1:
117 | major = int(version_str[0])
118 | if len(version_str) > 1:
119 | major = int(version_str[0:2])
120 | if len(version_str) > 2:
121 | minor = int(version_str[2], 16)
122 | if len(version_str) > 3:
123 | patch = int(version_str[3], 16)
124 | except ValueError:
125 | raise ProcessorError("Unexpected value in version: %s" % value)
126 | return "%s.%s.%s" % (major, minor, patch)
127 |
128 | def get_mauInstaller_info(self):
129 | """Gets info about a MAU installer from MS metadata."""
130 | if "base_url" in self.env:
131 | base_url = self.env["base_url"]
132 | else:
133 | culture_code = self.env.get("culture_code", CULTURE_CODE)
134 | base_url = BASE_URL % culture_code
135 | # Get metadata URL
136 | req = urllib2.Request(base_url)
137 | # Add the MAU User-Agent, since MAU feed server seems to explicitly block
138 | # a User-Agent of 'Python-urllib/2.7' - even a blank User-Agent string
139 | # passes.
140 | req.add_header("User-Agent",
141 | "Microsoft%20AutoUpdate/3.4 CFNetwork/760.2.6 Darwin/15.4.0 (x86_64)")
142 | try:
143 | f = urllib2.urlopen(req)
144 | data = f.read()
145 | f.close()
146 | except BaseException as err:
147 | raise ProcessorError("Can't download %s: %s" % (base_url, err))
148 |
149 | metadata = plistlib.readPlistFromString(data)
150 | # MAU 'update' metadata is a list of dicts.
151 | # we need to sort by date.
152 | sorted_metadata = sorted(metadata, key=itemgetter('Date'))
153 | # choose the last item, which should be most recent.
154 | item = sorted_metadata[-1]
155 |
156 | self.env["url"] = item["Location"]
157 | self.env["pkg_name"] = item["Payload"]
158 | self.output("Found URL %s" % self.env["url"])
159 | self.output("Got update: '%s'" % item["Title"])
160 | # now extract useful info from the rest of the metadata that could
161 | # be used in a pkginfo
162 | pkginfo = {}
163 | pkginfo["description"] = "%s" % item["Short Description"]
164 | pkginfo["display_name"] = item["Title"]
165 | max_os = self.valueToOSVersionString(item['Max OS'])
166 | min_os = self.valueToOSVersionString(item['Min OS'])
167 | if max_os != "0.0.0":
168 | pkginfo["maximum_os_version"] = max_os
169 | if min_os != "0.0.0":
170 | pkginfo["minimum_os_version"] = min_os
171 | installs_items = self.getInstallsItems(item)
172 | if installs_items:
173 | pkginfo["installs"] = installs_items
174 |
175 | pkginfo['name'] = self.env.get("munki_update_name", MUNKI_UPDATE_NAME)
176 | self.env["additional_pkginfo"] = pkginfo
177 | self.env["display_name"] = pkginfo["display_name"]
178 | self.output("Additional pkginfo: %s" % self.env["additional_pkginfo"])
179 |
180 | def main(self):
181 | """Get information about an update"""
182 | self.get_mauInstaller_info()
183 |
184 |
185 | if __name__ == "__main__":
186 | processor = MAUURLandUpdateInfoProvider()
187 | processor.execute_shell()
188 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/EA-OfficeAppVersion.xml:
--------------------------------------------------------------------------------
1 |
2 | %JSS_INVENTORY_NAME% 2016 Version
3 |
4 | String
5 |
6 | script
7 | Mac
8 |
31 |
32 | Extension Attributes
33 | Extension Attributes
34 |
35 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/JSS-README.md:
--------------------------------------------------------------------------------
1 | This will help you download the latest standalone installer for an Office App.
2 |
3 | It will:
4 | - create an Extended Attribute that will check each Office App version.
5 | - create a Smart Group that includes computers that don't have this version installed
6 | - create a script that will trigger the policy with the Serializer
7 | - create a Self-Service policy, featured on the main page.
8 |
9 | If you need to serialize your VL installers:
10 | - put your `Microsoft_Office_2016_VL_Serializer.pkg` in payload/
11 | - make sure `manual_trigger_office.sh` is included in your Office App recipes
12 | - customize `TRIGGER_OTHER` in MSO2016License.jss.recipe
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MSO2016License.jss.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Installes MS Office 2016 VL License
7 | Identifier
8 | com.github.autopkg.microsoft-recipes.2016SuiteStandalone.jss.MSO2016License
9 | Input
10 |
11 |
12 | NAME
13 | Microsoft Office License
14 | VERSION
15 | 1.0
16 |
17 |
18 | INTERNAL_NAME
19 | MSO2016License
20 |
21 |
22 | CATEGORY
23 | Productivity
24 |
25 |
26 | POLICY_CATEGORY
27 | Productivity
28 |
29 |
30 | GROUP_TEMPLATE
31 | SG-PackageInstalledByCasper.xml
32 |
33 |
34 | POLICY_TEMPLATE
35 | P-OtherTrigger.xml
36 |
37 | TRIGGER_OTHER
38 | office-license
39 |
40 | FREQUENCY
41 | ongoing
42 |
43 |
44 | MinimumVersion
45 | 0.4.0
46 | Process
47 |
48 |
49 | Processor
50 | PkgCopier
51 | Arguments
52 |
53 | pkg_path
54 | %RECIPE_CACHE_DIR%/%INTERNAL_NAME%-%VERSION%.pkg
55 | source_pkg
56 | %RECIPE_DIR%/payload/Microsoft_Office_2016_VL_Serializer.pkg
57 |
58 |
59 |
60 | Arguments
61 |
62 | pkg_path
63 | %pkg_path%
64 | version
65 | %VERSION%
66 | prod_name
67 | %NAME%
68 | category
69 | %CATEGORY%
70 | policy_category
71 | %POLICY_CATEGORY%
72 | policy_template
73 | %POLICY_TEMPLATE%
74 | groups
75 |
76 |
77 | name
78 | %INTERNAL_NAME%-smart
79 | smart
80 |
81 | template_path
82 | %GROUP_TEMPLATE%
83 |
84 |
85 |
86 | Processor
87 | JSSImporter
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MSOffice2016URLandUpdateInfoProvider.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | #
3 | # Copyright 2015 Allister Banks and Tim Sutton,
4 | # based on MSOffice2011UpdateInfoProvider by Greg Neagle
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | # Disabling 'no-env-member' for recipe processors
18 | #pylint:disable=e1101
19 | """See docstring for MSOffice2016URLandUpdateInfoProvider class"""
20 |
21 | import plistlib
22 | import re
23 | import urllib2
24 |
25 | from autopkglib import Processor, ProcessorError
26 |
27 |
28 | __all__ = ["MSOffice2016URLandUpdateInfoProvider"]
29 |
30 | # CULTURE_CODE defaulting to 'en-US' as the installers and updates seem to be
31 | # multilingual. Only Production (vs. Insider Slow/Fast) option available
32 | CULTURE_CODE = "0409"
33 | BASE_URL = "https://officecdn.microsoft.com/pr/C1297A47-86C4-4C1F-97FA-950631F94777/OfficeMac/%s15.xml"
34 | PROD_DICT = {
35 | 'Excel':'XCEL',
36 | 'OneNote':'ONMC',
37 | 'Outlook':'OPIM',
38 | 'PowerPoint':'PPT3',
39 | 'Word':'MSWD',
40 | }
41 | LOCALE_ID_INFO_URL = "https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx"
42 | SUPPORTED_TYPES = ["Combo", "Delta", "Standalone"]
43 | DEFAULT_TYPE = "Combo"
44 |
45 | class MSOffice2016URLandUpdateInfoProvider(Processor):
46 | """Provides a download URL for the most recent version of MS Office 2016."""
47 | input_variables = {
48 | "locale_id": {
49 | "required": False,
50 | "default": "1033",
51 | "description": (
52 | "Locale ID that determines the language "
53 | "that is retrieved from the metadata, currently only "
54 | "used by the update description. See %s "
55 | "for a list of locale codes. The default is en-US."
56 | % LOCALE_ID_INFO_URL)
57 | },
58 | "product": {
59 | "required": True,
60 | "description": "Name of product to fetch, e.g. Excel.",
61 | },
62 | "type": {
63 | "required": False,
64 | "default": DEFAULT_TYPE,
65 | "description": ("Update type to fetch. Supported values are: "
66 | "'%s'. Defaults to %s."
67 | % ("', '".join(SUPPORTED_TYPES),
68 | DEFAULT_TYPE)),
69 | },
70 | "munki_required_update_name": {
71 | "required": False,
72 | "default": "",
73 | "description":
74 | ("If the update is a delta, a 'requires' key will be set "
75 | "according to the minimum version defined in the MS "
76 | "metadata. If this key is set, this name will be used "
77 | "for the required item. If unset, NAME will be used.")
78 | },
79 | }
80 | output_variables = {
81 | "additional_pkginfo": {
82 | "description":
83 | "Some pkginfo fields extracted from the Microsoft metadata.",
84 | },
85 | "description": {
86 | "description":
87 | "Description of the update from the manifest, in the language "
88 | "given by the locale_id input variable.",
89 | },
90 | "version": {
91 | "description":
92 | ("The version of the update as extracted from the Microsoft "
93 | "metadata.")
94 | },
95 | "minimum_os_version": {
96 | "description":
97 | ("The minimum os version required by the update as extracted "
98 | "from the Microsoft metadata.")
99 | },
100 | "minimum_version_for_delta": {
101 | "description":
102 | ("If this update is a delta, this value will be set to the "
103 | "minimum required application version to which this delta "
104 | "can be applied. Otherwise it will be an empty string.")
105 | },
106 | "url": {
107 | "description": "URL to the latest requested installer.",
108 | },
109 | }
110 | description = __doc__
111 | min_delta_version = ""
112 |
113 | def sanity_check_expected_triggers(self, item):
114 | """Raises an exeception if the Trigger Condition or
115 | Triggers for an update don't match what we expect.
116 | Protects us if these change in the future."""
117 | # MS currently uses "Registered File" placeholders, which get replaced
118 | # with the bundle of a given application ID. In other words, this is
119 | # the bundle version of the app itself.
120 | if not item.get("Trigger Condition") == ["and", "Registered File"]:
121 | raise ProcessorError(
122 | "Unexpected Trigger Condition in item %s: %s"
123 | % (item["Title"], item["Trigger Condition"]))
124 | if not "Registered File" in item.get("Triggers", {}):
125 | raise ProcessorError(
126 | "Missing expected 'and Registered File' Trigger in item "
127 | "%s" % item["Title"])
128 |
129 | def get_installs_items(self, item):
130 | """Attempts to parse the Triggers to create an installs item using
131 | only manifest data, making the assumption that CFBundleVersion and
132 | CFBundleShortVersionString are equal."""
133 | self.sanity_check_expected_triggers(item)
134 | version = self.get_version(item)
135 | installs_item = {
136 | "CFBundleShortVersionString": version,
137 | "CFBundleVersion": version,
138 | "path": ("/Applications/Microsoft %s.app" % self.env["product"]),
139 | "type": "application",
140 | }
141 | return [installs_item]
142 |
143 | def get_version(self, item):
144 | """Extracts the version of the update item."""
145 | # We currently expect the version at the end of the Title key,
146 | # e.g.: "Microsoft Excel Update 15.10.0"
147 | # Work backwards from the end and break on the first thing
148 | # that looks like a version
149 | match = None
150 | for element in reversed(item["Title"].split()):
151 | match = re.match(r"(\d+\.\d+(\.\d)*)", element)
152 | if match:
153 | break
154 | if not match:
155 | raise ProcessorError(
156 | "Error validating Office 2016 version extracted "
157 | "from Title manifest value: '%s'" % item["Title"])
158 | version = match.group(0)
159 | return version
160 |
161 | def value_to_os_version_string(self, value):
162 | """Converts a value to an OS X version number"""
163 | version_str = ''
164 | if isinstance(value, int):
165 | version_str = hex(value)[2:]
166 | elif isinstance(value, basestring):
167 | if value.startswith('0x'):
168 | version_str = value[2:]
169 | # OS versions are encoded as hex:
170 | # 4184 = 0x1058 = 10.5.8
171 | major = 0
172 | minor = 0
173 | patch = 0
174 | try:
175 | if len(version_str) == 1:
176 | major = int(version_str[0])
177 | if len(version_str) > 1:
178 | major = int(version_str[0:2])
179 | if len(version_str) > 2:
180 | minor = int(version_str[2], 16)
181 | if len(version_str) > 3:
182 | patch = int(version_str[3], 16)
183 | except ValueError:
184 | raise ProcessorError("Unexpected value in version: %s" % value)
185 | return "%s.%s.%s" % (major, minor, patch)
186 |
187 | def get_installer_info(self):
188 | """Gets info about an installer from MS metadata."""
189 | base_url = BASE_URL % (CULTURE_CODE + PROD_DICT[self.env["product"]])
190 | # Get metadata URL
191 | req = urllib2.Request(base_url)
192 | # Add the MAU User-Agent, since MAU feed server seems to explicitly
193 | # block a User-Agent of 'Python-urllib/2.7' - even a blank User-Agent
194 | # string passes.
195 | req.add_header("User-Agent",
196 | "Microsoft%20AutoUpdate/3.6.16080300 CFNetwork/760.6.3 Darwin/15.6.0 (x86_64)")
197 |
198 | try:
199 | fdesc = urllib2.urlopen(req)
200 | data = fdesc.read()
201 | fdesc.close()
202 | except BaseException as err:
203 | raise ProcessorError("Can't download %s: %s" % (base_url, err))
204 |
205 | self.output(self.env["type"])
206 | metadata = plistlib.readPlistFromString(data)
207 | item = {}
208 | # Update feeds for a given 'channel' will have either combo or delta
209 | # pkg urls, with delta's additionally having a 'FullUpdaterLocation' key.
210 | # We populate the item dict with the appropriate section of the metadata
211 | # output, and do string replacement on the pattern of the URL in the
212 | # case of a Standalone app request.
213 | if self.env["type"] == "Combo" or self.env["type"] == "Standalone":
214 | item = [u for u in metadata if not u.get("FullUpdaterLocation")]
215 | elif self.env["type"] == "Delta":
216 | item = [u for u in metadata if u.get("FullUpdaterLocation")]
217 | if not item:
218 | raise ProcessorError("Could not find an applicable update in "
219 | "update metadata.")
220 | item = item[0]
221 |
222 | if self.env["type"] == "Standalone":
223 | p = re.compile(ur'(^[a-zA-Z0-9:/.-]*_[a-zA-Z]*_)(.*)Updater.pkg')
224 | url = item["Location"]
225 | (firstGroup, secondGroup) = re.search(p, url).group(1, 2)
226 | item["Location"] = firstGroup + "2016_"+ secondGroup + "Installer.pkg"
227 |
228 | self.env["url"] = item["Location"]
229 | self.output("Found URL %s" % self.env["url"])
230 |
231 | if self.env["type"] == "Combo" or self.env["type"] == "Delta":
232 | self.output("Got update: '%s'" % item["Title"])
233 |
234 | # now extract useful info from the rest of the metadata that could
235 | # be used in a pkginfo
236 | pkginfo = {}
237 | # Get a copy of the description in our locale_id
238 | all_localizations = item.get("Localized")
239 | lcid = self.env["locale_id"]
240 | if lcid not in all_localizations:
241 | raise ProcessorError(
242 | "Locale ID %s not found in manifest metadata. Available IDs: "
243 | "%s. See %s for more details." % (
244 | lcid,
245 | ", ".join(all_localizations.keys()),
246 | LOCALE_ID_INFO_URL))
247 | manifest_description = all_localizations[lcid]['Short Description']
248 | # Store the description in a separate output variable and in our pkginfo
249 | # directly.
250 | pkginfo["description"] = "%s" % manifest_description
251 | self.env["description"] = manifest_description
252 |
253 | max_os = self.value_to_os_version_string(item['Max OS'])
254 | min_os = self.value_to_os_version_string(item['Min OS'])
255 | if max_os != "0.0.0":
256 | pkginfo["maximum_os_version"] = max_os
257 | if min_os != "0.0.0":
258 | pkginfo["minimum_os_version"] = min_os
259 | installs_items = self.get_installs_items(item)
260 | if installs_items:
261 | pkginfo["installs"] = installs_items
262 |
263 | # Extra work to do if this is a delta updater
264 | if self.env["type"] == "Delta":
265 | try:
266 | rel_versions = item["Triggers"]["Registered File"]["VersionsRelative"]
267 | except KeyError:
268 | raise ProcessorError("Can't find expected VersionsRelative"
269 | "keys for determining minimum update "
270 | "required for delta update.")
271 | for expression in rel_versions:
272 | operator, ver_eval = expression.split()
273 | if operator == ">=":
274 | self.min_delta_version = ver_eval
275 | break
276 | if not self.min_delta_version:
277 | raise ProcessorError("Not able to determine minimum required "
278 | "version for delta update.")
279 | # Put minimum_update_version into installs item
280 | self.output("Adding minimum required version: %s" %
281 | self.min_delta_version)
282 | pkginfo["installs"][0]["minimum_update_version"] = \
283 | self.min_delta_version
284 | required_update_name = self.env["NAME"]
285 | if self.env["munki_required_update_name"]:
286 | required_update_name = self.env["munki_required_update_name"]
287 | # Add 'requires' array
288 | pkginfo["requires"] = ["%s-%s" % (required_update_name,
289 | self.min_delta_version)]
290 |
291 | self.env["version"] = self.get_version(item)
292 | self.env["minimum_os_version"] = min_os
293 | self.env["minimum_version_for_delta"] = self.min_delta_version
294 | self.env["additional_pkginfo"] = pkginfo
295 | self.env["url"] = item["Location"]
296 | self.output("Additional pkginfo: %s" % self.env["additional_pkginfo"])
297 |
298 | def main(self):
299 | """Get information about an update"""
300 | if self.env["type"] not in SUPPORTED_TYPES:
301 | raise ProcessorError("Invalid type: supported values are '%s'"
302 | % "', '".join(SUPPORTED_TYPES))
303 | self.get_installer_info()
304 |
305 |
306 | if __name__ == "__main__":
307 | PROCESSOR = MSOffice2016URLandUpdateInfoProvider()
308 | PROCESSOR.execute_shell()
309 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftExcel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arubdesu/microsoft-recipes/677aaa3a8b82f25fbb7c130177095d6c7841a03f/Office2016-IndividualApps/MicrosoftExcel.png
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftExcel2016.download.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Excel 2016 update (or standalone) pkg,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', 'Delta', and 'Standalone' options.
15 |
16 | Identifier
17 | com.github.autopkg.microsoft-recipes.download.MicrosoftExcel
18 | Input
19 |
20 | NAME
21 | Microsoft Excel
22 | MSLOCALE
23 | 1033
24 | MSPRODUCT
25 | Excel
26 | MSTYPE
27 | Combo
28 |
29 | SHORTNAME
30 | MicrosoftExcel
31 |
32 | MinimumVersion
33 | 0.4.2
34 | Process
35 |
36 |
37 | Processor
38 | MSOffice2016URLandUpdateInfoProvider
39 | Arguments
40 |
41 | locale_id
42 | %MSLOCALE%
43 | product
44 | %MSPRODUCT%
45 | type
46 | %MSTYPE%
47 |
48 |
49 |
50 | Processor
51 | URLDownloader
52 | Arguments
53 |
54 | filename
55 | %SHORTNAME%-%MSTYPE%-%version%.pkg
56 |
57 |
58 |
59 | Processor
60 | EndOfCheckPhase
61 |
62 |
63 | Processor
64 | CodeSignatureVerifier
65 | Arguments
66 |
67 | input_path
68 | %pathname%
69 | expected_authority_names
70 |
71 | Developer ID Installer: Microsoft Corporation
72 | Developer ID Certification Authority
73 | Apple Root CA
74 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftExcel2016.ds.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Excel 2016 update (or standalone) package and then
7 | copies the package to the DeployStudio packages repository.
8 | Requires the microsoft-recipes repo (currently https://github.com/arubdesu/microsoft-recipes,
9 | eventually to be merged into autopkg/microsoft-recipes).
10 |
11 | Input keys from the parent recipe:
12 | - MSLOCALE sets the locale for a descriptive text that will be
13 | extracted from the Microsoft update metadata. See
14 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
15 | for more information about locale IDs. Defaults to 1033 for English.
16 | - MSTYPE supports 'Combo', 'Delta', and 'Standalone' options.
17 |
18 | Input keys from this recipe:
19 | - DS_PKGS_PATH is the path for the Packages folder in the DeployStudio repository (trailing slash not required/desired).
20 | The path does not need to be on the same volume as the cache, as the pkg is being duplicated.
21 | - DS_NAME is what the final package will be called in DeployStudio, regardless of what was generated by the parent recipe.
22 | It defaults to "%NAME% %MSTYPE%" (e.g., Microsoft Excel Combo), in case you wish to override this
23 | recipe more than once (e.g., for both Standalone and Combo).
24 |
25 | Identifier
26 | com.github.autopkg.microsoft-recipes.ds.MicrosoftExcel
27 | Input
28 |
29 | DS_PKGS_PATH
30 | /Volumes/DSServer/Users/Shared/Deploy/Packages
31 | DS_NAME
32 | %NAME% %MSTYPE%
33 |
34 | MinimumVersion
35 | 0.4.2
36 | ParentRecipe
37 | com.github.autopkg.microsoft-recipes.download.MicrosoftExcel
38 | Process
39 |
40 |
41 | Processor
42 | StopProcessingIf
43 | Arguments
44 |
45 | predicate
46 | download_changed == FALSE
47 |
48 |
49 |
50 | Processor
51 | Copier
52 | Arguments
53 |
54 | source_path
55 | %pathname%
56 | destination_path
57 | %DS_PKGS_PATH%/%DS_NAME%.pkg
58 | overwrite
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftExcel2016.install.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads and installs the latest Microsoft Excel 2016 'Standalone' version.
7 | Identifier
8 | com.github.autopkg.microsoft-recipes.install.MicrosoftExcel
9 | Input
10 |
11 | MSTYPE
12 | Standalone
13 |
14 | MinimumVersion
15 | 0.4.2
16 | ParentRecipe
17 | com.github.autopkg.microsoft-recipes.download.MicrosoftExcel
18 | Process
19 |
20 |
21 | Processor
22 | Installer
23 | Arguments
24 |
25 | pkg_path
26 | %pathname%
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftExcel2016.jss.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Identifier
6 | com.github.autopkg.microsoft-recipes.jss.MicrosoftExcel
7 | Input
8 |
9 |
10 | EA_TEMPLATE
11 | EA-OfficeAppVersion.xml
12 |
13 |
14 | SCRIPT_FILENAME
15 | manual_trigger_office.sh
16 | SCRIPT_TEMPLATE
17 | S-Standard.xml
18 |
19 |
20 | GROUP_NAME
21 | %SHORTNAME%-install-smart
22 | GROUP_TEMPLATE
23 | SG-ExtendedAttributeOffice.xml
24 |
25 |
26 | POLICY_CATEGORY
27 | Productivity
28 | POLICY_TEMPLATE
29 | P-SelfService.xml
30 |
31 |
32 | OS_REQUIREMENTS
33 | 10.11.x,10.10.x
34 | CATEGORY
35 | Productivity
36 |
37 |
38 | SELF_SERVICE_DESCRIPTION
39 | Microsoft Excel is a graphical Excel processing program that users can type with. It is made by the computer company Microsoft. The purpose of the MS Excel is to allow the users to type and save documents.
40 | SELF_SERVICE_ICON
41 | MicrosoftExcel.png
42 | FEATURED
43 | True
44 |
45 | ParentRecipe
46 | com.github.autopkg.microsoft-recipes.download.MicrosoftExcel
47 | MinimumVersion
48 | 0.4.2
49 | Process
50 |
51 |
52 | Processor
53 | JSSImporter
54 | Arguments
55 |
56 |
57 | extension_attributes
58 |
59 |
60 | ext_attribute_path
61 | %EA_TEMPLATE%
62 |
63 |
64 | scripts
65 |
66 |
67 | name
68 | %SCRIPT_FILENAME%
69 | template_path
70 | %SCRIPT_TEMPLATE%
71 |
72 |
73 | groups
74 |
75 |
76 | name
77 | %GROUP_NAME%
78 | smart
79 |
80 | template_path
81 | %GROUP_TEMPLATE%
82 |
83 |
84 |
85 |
86 | prod_name
87 | %NAME%
88 | category
89 | %CATEGORY%
90 | os_requirements
91 | %OS_REQUIREMENTS%
92 | pkg_path
93 | %pathname%
94 |
95 |
96 | policy_category
97 | %POLICY_CATEGORY%
98 | policy_template
99 | %POLICY_TEMPLATE%
100 |
101 |
102 | self_service_description
103 | %SELF_SERVICE_DESCRIPTION%
104 | self_service_icon
105 | %SELF_SERVICE_ICON%
106 |
107 |
108 |
109 |
110 |
111 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftExcel2016.lanrev.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Excel 2016 update (or standalone) pkg and uploads to LANrev,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', 'Delta', and 'Standalone' options.
15 | Identifier
16 | com.github.autopkg.microsoft-recipes.lanrev.MicrosoftExcel
17 | Input
18 |
19 | MSLOCALE
20 | 1033
21 | MSPRODUCT
22 | Excel
23 | MSTYPE
24 | Combo
25 | NAME
26 | Microsoft Excel
27 | min_os
28 | OSX10.10
29 |
30 | MinimumVersion
31 | 0.4.2
32 | ParentRecipe
33 | com.github.autopkg.microsoft-recipes.download.MicrosoftExcel
34 | Process
35 |
36 |
37 | Arguments
38 |
39 | dest_payload_path
40 | %RECIPE_CACHE_DIR%/%NAME%-%version%.amsdpackages
41 | import_pkg_to_servercenter
42 |
43 | sdpackages_ampkgprops_path
44 | %RECIPE_DIR%/%NAME%-Defaults.ampkgprops
45 | source_payload_path
46 | %pathname%
47 |
48 | Processor
49 | com.github.jbaker10.LANrevImporter/LANrevImporter
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftExcel2016.munki.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Excel 2016 update (or standalone) pkg,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', 'Delta', and 'Standalone' options. Default is Combo.
15 |
16 | Identifier
17 | com.github.autopkg.microsoft-recipes.munki.MicrosoftExcel
18 | MinimumVersion
19 | 0.4.2
20 | Input
21 |
22 | NAME
23 | Microsoft Excel
24 | MSLOCALE
25 | 1033
26 | MSPRODUCT
27 | Excel
28 | MSTYPE
29 | Combo
30 | MUNKI_REPO_SUBDIR
31 | apps
32 | pkginfo
33 |
34 | blocking_applications
35 |
36 | Microsoft Excel
37 | Microsoft Error Reporting
38 | Microsoft AutoUpdate
39 |
40 | catalogs
41 |
42 | testing
43 |
44 | name
45 | %NAME%_%MSTYPE%
46 | unattended_install
47 |
48 |
49 |
50 | ParentRecipe
51 | com.github.autopkg.microsoft-recipes.download.MicrosoftExcel
52 | Process
53 |
54 |
55 | Comment
56 | Merge input pkginfo and additional_pkginfo generated by MSOffice2016URLandUpdateInfoProvider
57 | Processor
58 | MunkiPkginfoMerger
59 |
60 |
61 | Arguments
62 |
63 | pkg_path
64 | %pathname%
65 | repo_subdirectory
66 | %MUNKI_REPO_SUBDIR%
67 |
68 | Processor
69 | MunkiImporter
70 |
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftOneNote2016.download.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest OneNote 2016 update pkg,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', and 'Delta' options. (No Standalone download available for OneNote.)
15 |
16 | Identifier
17 | com.github.autopkg.microsoft-recipes.download.MicrosoftOneNote
18 | Input
19 |
20 | NAME
21 | Microsoft OneNote
22 | MSLOCALE
23 | 1033
24 | MSPRODUCT
25 | OneNote
26 | MSTYPE
27 | Combo
28 |
29 | SHORTNAME
30 | MicrosoftOneNote
31 |
32 | MinimumVersion
33 | 0.4.2
34 | Process
35 |
36 |
37 | Processor
38 | MSOffice2016URLandUpdateInfoProvider
39 | Arguments
40 |
41 | locale_id
42 | %MSLOCALE%
43 | product
44 | %MSPRODUCT%
45 | type
46 | %MSTYPE%
47 |
48 |
49 |
50 | Processor
51 | URLDownloader
52 | Arguments
53 |
54 | filename
55 | %SHORTNAME%-%MSTYPE%-%version%.pkg
56 |
57 |
58 |
59 | Processor
60 | EndOfCheckPhase
61 |
62 |
63 | Processor
64 | CodeSignatureVerifier
65 | Arguments
66 |
67 | input_path
68 | %pathname%
69 | expected_authority_names
70 |
71 | Developer ID Installer: Microsoft Corporation (UBF8T346G9)
72 | Developer ID Certification Authority
73 | Apple Root CA
74 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftOneNote2016.ds.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest OneNote 2016 update package and then
7 | copies the package to the DeployStudio packages repository.
8 | Requires the microsoft-recipes repo (currently https://github.com/arubdesu/microsoft-recipes,
9 | eventually to be merged into autopkg/microsoft-recipes).
10 |
11 | Input keys from the parent recipe:
12 | - MSLOCALE sets the locale for a descriptive text that will be
13 | extracted from the Microsoft update metadata. See
14 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
15 | for more information about locale IDs. Defaults to 1033 for English.
16 | - MSTYPE supports 'Combo', and 'Delta' options. (No Standalone download available for OneNote.)
17 |
18 | Input keys from this recipe:
19 | - DS_PKGS_PATH is the path for the Packages folder in the DeployStudio repository (trailing slash not required/desired).
20 | The path does not need to be on the same volume as the cache, as the pkg is being duplicated.
21 | - DS_NAME is what the final package will be called in DeployStudio, regardless of what was generated by the parent recipe.
22 | It defaults to "%NAME% %MSTYPE%" (e.g., Microsoft OneNote Combo), in case you wish to override this
23 | recipe more than once (e.g., for both Delta and Combo).
24 |
25 | Identifier
26 | com.github.autopkg.microsoft-recipes.ds.MicrosoftOneNote
27 | Input
28 |
29 | DS_PKGS_PATH
30 | /Volumes/DSServer/Users/Shared/Deploy/Packages
31 | DS_NAME
32 | %NAME% %MSTYPE%
33 |
34 | MinimumVersion
35 | 0.4.2
36 | ParentRecipe
37 | com.github.autopkg.microsoft-recipes.download.MicrosoftOneNote
38 | Process
39 |
40 |
41 | Processor
42 | StopProcessingIf
43 | Arguments
44 |
45 | predicate
46 | download_changed == FALSE
47 |
48 |
49 |
50 | Processor
51 | Copier
52 | Arguments
53 |
54 | source_path
55 | %pathname%
56 | destination_path
57 | %DS_PKGS_PATH%/%DS_NAME%.pkg
58 | overwrite
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftOneNote2016.lanrev.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest OneNote 2016 update (or standalone) pkg and uploads to LANrev,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', and 'Delta' options. (No Standalone download available for OneNote)
15 | Identifier
16 | com.github.autopkg.microsoft-recipes.lanrev.MicrosoftOneNote
17 | Input
18 |
19 | MSLOCALE
20 | 1033
21 | MSPRODUCT
22 | Excel
23 | MSTYPE
24 | Combo
25 | NAME
26 | Microsoft Excel
27 | min_os
28 | OSX10.10
29 |
30 | MinimumVersion
31 | 0.4.0
32 | ParentRecipe
33 | com.github.autopkg.microsoft-recipes.download.MicrosoftOneNote
34 | Process
35 |
36 |
37 | Arguments
38 |
39 | dest_payload_path
40 | %RECIPE_CACHE_DIR%/%NAME%-%version%.amsdpackages
41 | import_pkg_to_servercenter
42 |
43 | sdpackages_ampkgprops_path
44 | %RECIPE_DIR%/%NAME%-Defaults.ampkgprops
45 | source_payload_path
46 | %pathname%
47 |
48 | Processor
49 | com.github.jbaker10.LANrevImporter/LANrevImporter
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftOneNote2016.munki.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest OneNote 2016 update (or standalone) pkg,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', 'Delta', and 'Standalone' options. Default is Combo.
15 |
16 | Identifier
17 | com.github.autopkg.microsoft-recipes.munki.MicrosoftOneNote
18 | MinimumVersion
19 | 0.4.2
20 | Input
21 |
22 | NAME
23 | Microsoft OneNote
24 | MSLOCALE
25 | 1033
26 | MSPRODUCT
27 | OneNote
28 | MSTYPE
29 | Combo
30 | MUNKI_REPO_SUBDIR
31 | apps
32 | pkginfo
33 |
34 | blocking_applications
35 |
36 | Microsoft OneNote
37 | Microsoft Error Reporting
38 | Microsoft AutoUpdate
39 |
40 | catalogs
41 |
42 | testing
43 |
44 | name
45 | %NAME%_%MSTYPE%
46 | unattended_install
47 |
48 |
49 |
50 | ParentRecipe
51 | com.github.autopkg.microsoft-recipes.download.MicrosoftOneNote
52 | Process
53 |
54 |
55 | Comment
56 | Merge input pkginfo and additional_pkginfo generated by MSOffice2016URLandUpdateInfoProvider
57 | Processor
58 | MunkiPkginfoMerger
59 |
60 |
61 | Arguments
62 |
63 | pkg_path
64 | %pathname%
65 | repo_subdirectory
66 | %MUNKI_REPO_SUBDIR%
67 |
68 | Processor
69 | MunkiImporter
70 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftOutlook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arubdesu/microsoft-recipes/677aaa3a8b82f25fbb7c130177095d6c7841a03f/Office2016-IndividualApps/MicrosoftOutlook.png
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftOutlook2016.download.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Outlook 2016 update (or standalone) pkg,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', 'Delta', and 'Standalone' options. Default is Combo.
15 |
16 | Identifier
17 | com.github.autopkg.microsoft-recipes.download.MicrosoftOutlook
18 | Input
19 |
20 | NAME
21 | Microsoft Outlook
22 | MSLOCALE
23 | 1033
24 | MSPRODUCT
25 | Outlook
26 | MSTYPE
27 | Combo
28 |
29 | SHORTNAME
30 | MicrosoftOutlook
31 |
32 | MinimumVersion
33 | 0.4.2
34 | Process
35 |
36 |
37 | Processor
38 | MSOffice2016URLandUpdateInfoProvider
39 | Arguments
40 |
41 | locale_id
42 | %MSLOCALE%
43 | product
44 | %MSPRODUCT%
45 | type
46 | %MSTYPE%
47 |
48 |
49 |
50 | Processor
51 | URLDownloader
52 | Arguments
53 |
54 | filename
55 | %SHORTNAME%-%MSTYPE%-%version%.pkg
56 |
57 |
58 |
59 | Processor
60 | EndOfCheckPhase
61 |
62 |
63 | Processor
64 | CodeSignatureVerifier
65 | Arguments
66 |
67 | input_path
68 | %pathname%
69 | expected_authority_names
70 |
71 | Developer ID Installer: Microsoft Corporation (UBF8T346G9)
72 | Developer ID Certification Authority
73 | Apple Root CA
74 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftOutlook2016.ds.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Outlook 2016 update (or standalone) package and then
7 | copies the package to the DeployStudio packages repository.
8 | Requires the microsoft-recipes repo (currently https://github.com/arubdesu/microsoft-recipes,
9 | eventually to be merged into autopkg/microsoft-recipes).
10 |
11 | Input keys from the parent recipe:
12 | - MSLOCALE sets the locale for a descriptive text that will be
13 | extracted from the Microsoft update metadata. See
14 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
15 | for more information about locale IDs. Defaults to 1033 for English.
16 | - MSTYPE supports 'Combo', 'Delta', and 'Standalone' options.
17 |
18 | Input keys from this recipe:
19 | - DS_PKGS_PATH is the path for the Packages folder in the DeployStudio repository (trailing slash not required/desired).
20 | The path does not need to be on the same volume as the cache, as the pkg is being duplicated.
21 | - DS_NAME is what the final package will be called in DeployStudio, regardless of what was generated by the parent recipe.
22 | It defaults to "%NAME% %MSTYPE%" (e.g., Microsoft Outlook Combo), in case you wish to override this
23 | recipe more than once (e.g., for both Standalone and Combo).
24 |
25 | Identifier
26 | com.github.autopkg.microsoft-recipes.ds.MicrosoftOutlook
27 | Input
28 |
29 | DS_PKGS_PATH
30 | /Volumes/DSServer/Users/Shared/Deploy/Packages
31 | DS_NAME
32 | %NAME% %MSTYPE%
33 |
34 | MinimumVersion
35 | 0.4.2
36 | ParentRecipe
37 | com.github.autopkg.microsoft-recipes.download.MicrosoftOutlook
38 | Process
39 |
40 |
41 | Processor
42 | StopProcessingIf
43 | Arguments
44 |
45 | predicate
46 | download_changed == FALSE
47 |
48 |
49 |
50 | Processor
51 | Copier
52 | Arguments
53 |
54 | source_path
55 | %pathname%
56 | destination_path
57 | %DS_PKGS_PATH%/%DS_NAME%.pkg
58 | overwrite
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftOutlook2016.install.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads and installs the latest Microsoft Outlook 2016 'Standalone' version.
7 | Identifier
8 | com.github.autopkg.microsoft-recipes.install.MicrosoftOutlook
9 | Input
10 |
11 | MSTYPE
12 | Standalone
13 |
14 | MinimumVersion
15 | 0.4.2
16 | ParentRecipe
17 | com.github.autopkg.microsoft-recipes.download.MicrosoftOutlook
18 | Process
19 |
20 |
21 | Processor
22 | Installer
23 | Arguments
24 |
25 | pkg_path
26 | %pathname%
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftOutlook2016.jss.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Identifier
6 | com.github.autopkg.microsoft-recipes.jss.MicrosoftOutlook
7 | Input
8 |
9 |
10 | EA_TEMPLATE
11 | EA-OfficeAppVersion.xml
12 |
13 |
14 | SCRIPT_FILENAME
15 | manual_trigger_office.sh
16 | SCRIPT_TEMPLATE
17 | S-Standard.xml
18 |
19 |
20 | GROUP_NAME
21 | %SHORTNAME%-install-smart
22 | GROUP_TEMPLATE
23 | SG-ExtendedAttributeOffice.xml
24 |
25 |
26 | POLICY_CATEGORY
27 | Productivity
28 | POLICY_TEMPLATE
29 | P-SelfService.xml
30 |
31 |
32 | OS_REQUIREMENTS
33 | 10.11.x,10.10.x
34 | CATEGORY
35 | Productivity
36 |
37 |
38 | SELF_SERVICE_DESCRIPTION
39 | Microsoft Outlook.
40 | SELF_SERVICE_ICON
41 | MicrosoftOutlook.png
42 | FEATURED
43 | True
44 |
45 | ParentRecipe
46 | com.github.autopkg.microsoft-recipes.download.MicrosoftOutlook
47 | MinimumVersion
48 | 0.4.2
49 | Process
50 |
51 |
52 | Processor
53 | JSSImporter
54 | Arguments
55 |
56 |
57 | extension_attributes
58 |
59 |
60 | ext_attribute_path
61 | %EA_TEMPLATE%
62 |
63 |
64 | scripts
65 |
66 |
67 | name
68 | %SCRIPT_FILENAME%
69 | template_path
70 | %SCRIPT_TEMPLATE%
71 |
72 |
73 | groups
74 |
75 |
76 | name
77 | %GROUP_NAME%
78 | smart
79 |
80 | template_path
81 | %GROUP_TEMPLATE%
82 |
83 |
84 |
85 |
86 | prod_name
87 | %NAME%
88 | category
89 | %CATEGORY%
90 | os_requirements
91 | %OS_REQUIREMENTS%
92 | pkg_path
93 | %pathname%
94 |
95 |
96 | policy_category
97 | %POLICY_CATEGORY%
98 | policy_template
99 | %POLICY_TEMPLATE%
100 |
101 |
102 | self_service_description
103 | %SELF_SERVICE_DESCRIPTION%
104 | self_service_icon
105 | %SELF_SERVICE_ICON%
106 |
107 |
108 |
109 |
110 |
111 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftOutlook2016.lanrev.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Outlook 2016 update (or standalone) pkg and uploads to LANrev,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', 'Delta', and 'Standalone' options. Default is Combo.
15 |
16 | Identifier
17 | com.github.autopkg.microsoft-recipes.lanrev.MicrosoftOutlook
18 | Input
19 |
20 | MSLOCALE
21 | 1033
22 | MSPRODUCT
23 | Outlook
24 | MSTYPE
25 | Combo
26 | NAME
27 | Microsoft Outlook
28 | min_os
29 | OSX10.10
30 |
31 | MinimumVersion
32 | 0.4.0
33 | ParentRecipe
34 | com.github.autopkg.microsoft-recipes.download.MicrosoftOutlook
35 | Process
36 |
37 |
38 | Arguments
39 |
40 | dest_payload_path
41 | %RECIPE_CACHE_DIR%/%NAME%-%version%.amsdpackages
42 | import_pkg_to_servercenter
43 |
44 | sdpackages_ampkgprops_path
45 | %RECIPE_DIR%/%NAME%-Defaults.ampkgprops
46 | source_payload_path
47 | %pathname%
48 |
49 | Processor
50 | com.github.jbaker10.LANrevImporter/LANrevImporter
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftOutlook2016.munki.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Outlook 2016 update (or standalone) pkg,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', 'Delta', and 'Standalone' options. Default is Combo.
15 |
16 | Identifier
17 | com.github.autopkg.microsoft-recipes.munki.MicrosoftOutlook
18 | MinimumVersion
19 | 0.4.2
20 | Input
21 |
22 | NAME
23 | Microsoft Outlook
24 | MSLOCALE
25 | 1033
26 | MSPRODUCT
27 | Outlook
28 | MSTYPE
29 | Combo
30 | MUNKI_REPO_SUBDIR
31 | apps
32 | pkginfo
33 |
34 | blocking_applications
35 |
36 | Microsoft Outlook
37 | Microsoft Error Reporting
38 | Microsoft AutoUpdate
39 |
40 | catalogs
41 |
42 | testing
43 |
44 | name
45 | %NAME%_%MSTYPE%
46 | unattended_install
47 |
48 |
49 |
50 | ParentRecipe
51 | com.github.autopkg.microsoft-recipes.download.MicrosoftOutlook
52 | Process
53 |
54 |
55 | Comment
56 | Merge input pkginfo and additional_pkginfo generated by MSOffice2016URLandUpdateInfoProvider
57 | Processor
58 | MunkiPkginfoMerger
59 |
60 |
61 | Arguments
62 |
63 | pkg_path
64 | %pathname%
65 | repo_subdirectory
66 | %MUNKI_REPO_SUBDIR%
67 |
68 | Processor
69 | MunkiImporter
70 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftPowerPoint.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arubdesu/microsoft-recipes/677aaa3a8b82f25fbb7c130177095d6c7841a03f/Office2016-IndividualApps/MicrosoftPowerPoint.png
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftPowerPoint2016.download.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest PowerPoint 2016 update (or standalone) pkg,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', 'Delta', and 'Standalone' options.
15 |
16 | Identifier
17 | com.github.autopkg.microsoft-recipes.download.MicrosoftPowerPoint
18 | Input
19 |
20 | NAME
21 | Microsoft PowerPoint
22 | MSLOCALE
23 | 1033
24 | MSPRODUCT
25 | PowerPoint
26 | MSTYPE
27 | Combo
28 |
29 | SHORTNAME
30 | MicrosoftPowerPoint
31 |
32 | MinimumVersion
33 | 0.4.2
34 | Process
35 |
36 |
37 | Processor
38 | MSOffice2016URLandUpdateInfoProvider
39 | Arguments
40 |
41 | locale_id
42 | %MSLOCALE%
43 | product
44 | %MSPRODUCT%
45 | type
46 | %MSTYPE%
47 |
48 |
49 |
50 | Processor
51 | URLDownloader
52 | Arguments
53 |
54 | filename
55 | %SHORTNAME%-%MSTYPE%-%version%.pkg
56 |
57 |
58 |
59 | Processor
60 | EndOfCheckPhase
61 |
62 |
63 | Processor
64 | CodeSignatureVerifier
65 | Arguments
66 |
67 | input_path
68 | %pathname%
69 | expected_authority_names
70 |
71 | Developer ID Installer: Microsoft Corporation (UBF8T346G9)
72 | Developer ID Certification Authority
73 | Apple Root CA
74 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftPowerPoint2016.ds.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest PowerPoint 2016 update (or standalone) package and then
7 | copies the package to the DeployStudio packages repository.
8 | Requires the microsoft-recipes repo (currently https://github.com/arubdesu/microsoft-recipes,
9 | eventually to be merged into autopkg/microsoft-recipes).
10 |
11 | Input keys from the parent recipe:
12 | - MSLOCALE sets the locale for a descriptive text that will be
13 | extracted from the Microsoft update metadata. See
14 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
15 | for more information about locale IDs. Defaults to 1033 for English.
16 | - MSTYPE supports 'Combo', 'Delta', and 'Standalone' options.
17 |
18 | Input keys from this recipe:
19 | - DS_PKGS_PATH is the path for the Packages folder in the DeployStudio repository (trailing slash not required/desired).
20 | The path does not need to be on the same volume as the cache, as the pkg is being duplicated.
21 | - DS_NAME is what the final package will be called in DeployStudio, regardless of what was generated by the parent recipe.
22 | It defaults to "%NAME% %MSTYPE%" (e.g., Microsoft PowerPoint Combo), in case you wish to override this
23 | recipe more than once (e.g., for both Standalone and Combo).
24 |
25 | Identifier
26 | com.github.autopkg.microsoft-recipes.ds.MicrosoftPowerPoint
27 | Input
28 |
29 | DS_PKGS_PATH
30 | /Volumes/DSServer/Users/Shared/Deploy/Packages
31 | DS_NAME
32 | %NAME% %MSTYPE%
33 |
34 | MinimumVersion
35 | 0.4.2
36 | ParentRecipe
37 | com.github.autopkg.microsoft-recipes.download.MicrosoftPowerPoint
38 | Process
39 |
40 |
41 | Processor
42 | StopProcessingIf
43 | Arguments
44 |
45 | predicate
46 | download_changed == FALSE
47 |
48 |
49 |
50 | Processor
51 | Copier
52 | Arguments
53 |
54 | source_path
55 | %pathname%
56 | destination_path
57 | %DS_PKGS_PATH%/%DS_NAME%.pkg
58 | overwrite
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftPowerPoint2016.install.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads and installs the latest Microsoft PowerPoint 2016 'Standalone' version.
7 | Identifier
8 | com.github.autopkg.microsoft-recipes.install.MicrosoftPowerPoint
9 | Input
10 |
11 | MSTYPE
12 | Standalone
13 |
14 | MinimumVersion
15 | 0.4.2
16 | ParentRecipe
17 | com.github.autopkg.microsoft-recipes.download.MicrosoftPowerPoint
18 | Process
19 |
20 |
21 | Processor
22 | Installer
23 | Arguments
24 |
25 | pkg_path
26 | %pathname%
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftPowerPoint2016.jss.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Identifier
6 | com.github.autopkg.microsoft-recipes.jss.MicrosoftPowerPoint
7 | Input
8 |
9 |
10 | EA_TEMPLATE
11 | EA-OfficeAppVersion.xml
12 |
13 |
14 | SCRIPT_FILENAME
15 | manual_trigger_office.sh
16 | SCRIPT_TEMPLATE
17 | S-Standard.xml
18 |
19 |
20 | GROUP_NAME
21 | %SHORTNAME%-install-smart
22 | GROUP_TEMPLATE
23 | SG-ExtendedAttributeOffice.xml
24 |
25 |
26 | POLICY_CATEGORY
27 | Productivity
28 | POLICY_TEMPLATE
29 | P-SelfService.xml
30 |
31 |
32 | OS_REQUIREMENTS
33 | 10.11.x,10.10.x
34 | CATEGORY
35 | Productivity
36 |
37 |
38 | SELF_SERVICE_DESCRIPTION
39 | Microsoft PowerPoint is a graphical PowerPoint processing program that users can type with. It is made by the computer company Microsoft. The purpose of the MS PowerPoint is to allow the users to type and save documents.
40 | SELF_SERVICE_ICON
41 | MicrosoftPowerPoint.png
42 | FEATURED
43 | True
44 |
45 | ParentRecipe
46 | com.github.autopkg.microsoft-recipes.download.MicrosoftPowerPoint
47 | MinimumVersion
48 | 0.4.2
49 | Process
50 |
51 |
52 | Processor
53 | JSSImporter
54 | Arguments
55 |
56 |
57 | extension_attributes
58 |
59 |
60 | ext_attribute_path
61 | %EA_TEMPLATE%
62 |
63 |
64 | scripts
65 |
66 |
67 | name
68 | %SCRIPT_FILENAME%
69 | template_path
70 | %SCRIPT_TEMPLATE%
71 |
72 |
73 | groups
74 |
75 |
76 | name
77 | %GROUP_NAME%
78 | smart
79 |
80 | template_path
81 | %GROUP_TEMPLATE%
82 |
83 |
84 |
85 |
86 | prod_name
87 | %NAME%
88 | category
89 | %CATEGORY%
90 | os_requirements
91 | %OS_REQUIREMENTS%
92 | pkg_path
93 | %pathname%
94 |
95 |
96 | policy_category
97 | %POLICY_CATEGORY%
98 | policy_template
99 | %POLICY_TEMPLATE%
100 |
101 |
102 | self_service_description
103 | %SELF_SERVICE_DESCRIPTION%
104 | self_service_icon
105 | %SELF_SERVICE_ICON%
106 |
107 |
108 |
109 |
110 |
111 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftPowerPoint2016.lanrev.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest PowerPoint 2016 update (or standalone) pkg and uploads to LANrev,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', 'Delta', and 'Standalone' options.
15 |
16 | Identifier
17 | com.github.autopkg.microsoft-recipes.lanrev.MicrosoftPowerPoint
18 | Input
19 |
20 | MSLOCALE
21 | 1033
22 | MSPRODUCT
23 | PowerPoint
24 | MSTYPE
25 | Combo
26 | NAME
27 | Microsoft PowerPoint
28 | min_os
29 | OSX10.10
30 |
31 | MinimumVersion
32 | 0.4.2
33 | ParentRecipe
34 | com.github.autopkg.microsoft-recipes.download.MicrosoftPowerPoint
35 | Process
36 |
37 |
38 | Arguments
39 |
40 | dest_payload_path
41 | %RECIPE_CACHE_DIR%/%NAME%-%version%.amsdpackages
42 | import_pkg_to_servercenter
43 |
44 | sdpackages_ampkgprops_path
45 | %RECIPE_DIR%/%NAME%-Defaults.ampkgprops
46 | source_payload_path
47 | %pathname%
48 |
49 | Processor
50 | com.github.jbaker10.LANrevImporter/LANrevImporter
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftPowerPoint2016.munki.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest PowerPoint 2016 update (or standalone) pkg,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', 'Delta', and 'Standalone' options. Default is Combo.
15 |
16 | Identifier
17 | com.github.autopkg.microsoft-recipes.munki.MicrosoftPowerPoint
18 | MinimumVersion
19 | 0.4.2
20 | Input
21 |
22 | NAME
23 | Microsoft PowerPoint
24 | MSLOCALE
25 | 1033
26 | MSPRODUCT
27 | PowerPoint
28 | MSTYPE
29 | Combo
30 | MUNKI_REPO_SUBDIR
31 | apps
32 | pkginfo
33 |
34 | blocking_applications
35 |
36 | Microsoft PowerPoint
37 | Microsoft Error Reporting
38 | Microsoft AutoUpdate
39 |
40 | catalogs
41 |
42 | testing
43 |
44 | name
45 | %NAME%_%MSTYPE%
46 | unattended_install
47 |
48 |
49 |
50 | ParentRecipe
51 | com.github.autopkg.microsoft-recipes.download.MicrosoftPowerPoint
52 | Process
53 |
54 |
55 | Comment
56 | Merge input pkginfo and additional_pkginfo generated by MSOffice2016URLandUpdateInfoProvider
57 | Processor
58 | MunkiPkginfoMerger
59 |
60 |
61 | Arguments
62 |
63 | pkg_path
64 | %pathname%
65 | repo_subdirectory
66 | %MUNKI_REPO_SUBDIR%
67 |
68 | Processor
69 | MunkiImporter
70 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftWord.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arubdesu/microsoft-recipes/677aaa3a8b82f25fbb7c130177095d6c7841a03f/Office2016-IndividualApps/MicrosoftWord.png
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftWord2016.download.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Word 2016 update (or standalone) pkg,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', 'Delta', and 'Standalone' options.
15 |
16 | Identifier
17 | com.github.autopkg.microsoft-recipes.download.MicrosoftWord
18 | Input
19 |
20 | NAME
21 | Microsoft Word
22 | MSLOCALE
23 | 1033
24 | MSPRODUCT
25 | Word
26 | MSTYPE
27 | Combo
28 |
29 | SHORTNAME
30 | MicrosoftWord
31 |
32 | MinimumVersion
33 | 0.4.2
34 | Process
35 |
36 |
37 | Processor
38 | MSOffice2016URLandUpdateInfoProvider
39 | Arguments
40 |
41 | locale_id
42 | %MSLOCALE%
43 | product
44 | %MSPRODUCT%
45 | type
46 | %MSTYPE%
47 |
48 |
49 |
50 | Processor
51 | URLDownloader
52 | Arguments
53 |
54 | filename
55 | %SHORTNAME%-%MSTYPE%-%version%.pkg
56 |
57 |
58 |
59 | Processor
60 | EndOfCheckPhase
61 |
62 |
63 | Processor
64 | CodeSignatureVerifier
65 | Arguments
66 |
67 | input_path
68 | %pathname%
69 | expected_authority_names
70 |
71 | Developer ID Installer: Microsoft Corporation (UBF8T346G9)
72 | Developer ID Certification Authority
73 | Apple Root CA
74 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftWord2016.ds.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Word 2016 update (or standalone) package and then
7 | copies the package to the DeployStudio packages repository.
8 | Requires the microsoft-recipes repo (currently https://github.com/arubdesu/microsoft-recipes,
9 | eventually to be merged into autopkg/microsoft-recipes).
10 |
11 | Input keys from the parent recipe:
12 | - MSLOCALE sets the locale for a descriptive text that will be
13 | extracted from the Microsoft update metadata. See
14 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
15 | for more information about locale IDs. Defaults to 1033 for English.
16 | - MSTYPE supports 'Combo', 'Delta', and 'Standalone' options.
17 |
18 | Input keys from this recipe:
19 | - DS_PKGS_PATH is the path for the Packages folder in the DeployStudio repository (trailing slash not required/desired).
20 | The path does not need to be on the same volume as the cache, as the pkg is being duplicated.
21 | - DS_NAME is what the final package will be called in DeployStudio, regardless of what was generated by the parent recipe.
22 | It defaults to "%NAME% %MSTYPE%" (e.g., Microsoft Word Combo), in case you wish to override this
23 | recipe more than once (e.g., for both Standalone and Combo).
24 |
25 | Identifier
26 | com.github.autopkg.microsoft-recipes.ds.MicrosoftWord
27 | Input
28 |
29 | DS_PKGS_PATH
30 | /Volumes/DSServer/Users/Shared/Deploy/Packages
31 | DS_NAME
32 | %NAME% %MSTYPE%
33 |
34 | MinimumVersion
35 | 0.4.2
36 | ParentRecipe
37 | com.github.autopkg.microsoft-recipes.download.MicrosoftWord
38 | Process
39 |
40 |
41 | Processor
42 | StopProcessingIf
43 | Arguments
44 |
45 | predicate
46 | download_changed == FALSE
47 |
48 |
49 |
50 | Processor
51 | Copier
52 | Arguments
53 |
54 | source_path
55 | %pathname%
56 | destination_path
57 | %DS_PKGS_PATH%/%DS_NAME%.pkg
58 | overwrite
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftWord2016.install.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads and installs the latest Microsoft Word 2016 'Standalone' version.
7 | Identifier
8 | com.github.autopkg.microsoft-recipes.install.MicrosoftWord
9 | Input
10 |
11 | MSTYPE
12 | Standalone
13 |
14 | MinimumVersion
15 | 0.4.2
16 | ParentRecipe
17 | com.github.autopkg.microsoft-recipes.download.MicrosoftWord
18 | Process
19 |
20 |
21 | Processor
22 | Installer
23 | Arguments
24 |
25 | pkg_path
26 | %pathname%
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftWord2016.jss.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Identifier
6 | com.github.autopkg.microsoft-recipes.jss.MicrosoftWord
7 | Input
8 |
9 |
10 | EA_TEMPLATE
11 | EA-OfficeAppVersion.xml
12 |
13 |
14 | SCRIPT_FILENAME
15 | manual_trigger_office.sh
16 | SCRIPT_TEMPLATE
17 | S-Standard.xml
18 |
19 |
20 | GROUP_NAME
21 | %SHORTNAME%-install-smart
22 | GROUP_TEMPLATE
23 | SG-ExtendedAttributeOffice.xml
24 |
25 |
26 | POLICY_CATEGORY
27 | Productivity
28 | POLICY_TEMPLATE
29 | P-SelfService.xml
30 |
31 |
32 | OS_REQUIREMENTS
33 | 10.11.x,10.10.x
34 | CATEGORY
35 | Productivity
36 |
37 |
38 | SELF_SERVICE_DESCRIPTION
39 | Microsoft Word is a graphical word processing program that users can type with. It is made by the computer company Microsoft. The purpose of the MS Word is to allow the users to type and save documents.
40 | SELF_SERVICE_ICON
41 | MicrosoftWord.png
42 | FEATURED
43 | True
44 |
45 | ParentRecipe
46 | com.github.autopkg.microsoft-recipes.download.MicrosoftWord
47 | MinimumVersion
48 | 0.4.2
49 | Process
50 |
51 |
52 | Processor
53 | JSSImporter
54 | Arguments
55 |
56 |
57 | extension_attributes
58 |
59 |
60 | ext_attribute_path
61 | %EA_TEMPLATE%
62 |
63 |
64 | scripts
65 |
66 |
67 | name
68 | %SCRIPT_FILENAME%
69 | template_path
70 | %SCRIPT_TEMPLATE%
71 |
72 |
73 | groups
74 |
75 |
76 | name
77 | %GROUP_NAME%
78 | smart
79 |
80 | template_path
81 | %GROUP_TEMPLATE%
82 |
83 |
84 |
85 |
86 | prod_name
87 | %NAME%
88 | category
89 | %CATEGORY%
90 | os_requirements
91 | %OS_REQUIREMENTS%
92 | pkg_path
93 | %pathname%
94 |
95 |
96 | policy_category
97 | %POLICY_CATEGORY%
98 | policy_template
99 | %POLICY_TEMPLATE%
100 |
101 |
102 | self_service_description
103 | %SELF_SERVICE_DESCRIPTION%
104 | self_service_icon
105 | %SELF_SERVICE_ICON%
106 |
107 |
108 |
109 |
110 |
111 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftWord2016.lanrev.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Word 2016 update (or standalone) pkg and uploads to LANrev,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', 'Delta', and 'Standalone' options.
15 |
16 | Identifier
17 | com.github.autopkg.microsoft-recipes.lanrev.MicrosoftWord
18 | Input
19 |
20 | MSLOCALE
21 | 1033
22 | MSPRODUCT
23 | Word
24 | MSTYPE
25 | Combo
26 | NAME
27 | Microsoft Word
28 | min_os
29 | OSX10.10
30 |
31 | MinimumVersion
32 | 0.4.2
33 | ParentRecipe
34 | com.github.autopkg.microsoft-recipes.download.MicrosoftWord
35 | Process
36 |
37 |
38 | Arguments
39 |
40 | dest_payload_path
41 | %RECIPE_CACHE_DIR%/%NAME%-%version%.amsdpackages
42 | import_pkg_to_servercenter
43 |
44 | sdpackages_ampkgprops_path
45 | %RECIPE_DIR%/%NAME%-Defaults.ampkgprops
46 | source_payload_path
47 | %pathname%
48 |
49 | Processor
50 | com.github.jbaker10.LANrevImporter/LANrevImporter
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/MicrosoftWord2016.munki.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Word 2016 update (or standalone) pkg,
7 | and appends the type and version to the end of the filename.
8 |
9 | MSLOCALE sets the locale for a descriptive text that will be
10 | extracted from the Microsoft update metadata. See
11 | https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
12 | for more information about locale IDs. Defaults to 1033 for English.
13 |
14 | TYPE supports 'Combo', 'Delta', and 'Standalone' options. Default is Combo.
15 |
16 | Identifier
17 | com.github.autopkg.microsoft-recipes.munki.MicrosoftWord
18 | MinimumVersion
19 | 0.4.2
20 | Input
21 |
22 | NAME
23 | Microsoft Word
24 | MSLOCALE
25 | 1033
26 | MSPRODUCT
27 | Word
28 | MSTYPE
29 | Combo
30 | MUNKI_REPO_SUBDIR
31 | apps
32 | pkginfo
33 |
34 | blocking_applications
35 |
36 | Microsoft Word
37 | Microsoft Error Reporting
38 | Microsoft AutoUpdate
39 |
40 | catalogs
41 |
42 | testing
43 |
44 | name
45 | %NAME%_%MSTYPE%
46 | unattended_install
47 |
48 |
49 |
50 | ParentRecipe
51 | com.github.autopkg.microsoft-recipes.download.MicrosoftWord
52 | Process
53 |
54 |
55 | Comment
56 | Merge input pkginfo and additional_pkginfo generated by MSOffice2016URLandUpdateInfoProvider
57 | Processor
58 | MunkiPkginfoMerger
59 |
60 |
61 | Arguments
62 |
63 | pkg_path
64 | %pathname%
65 | repo_subdirectory
66 | %MUNKI_REPO_SUBDIR%
67 |
68 | Processor
69 | MunkiImporter
70 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/P-OtherTrigger.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | %PROD_NAME%
4 | true
5 | EVENT
6 | %TRIGGER_OTHER%
7 | %FREQUENCY%
8 |
9 | %POLICY_CATEGORY%
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | false
23 |
24 |
25 | true
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/P-SelfService.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | %PROD_NAME%
4 | true
5 | Ongoing
6 |
7 | %POLICY_CATEGORY%
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | true
21 | Install %VERSION%
22 | %FEATURED%
23 |
24 |
25 | true
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/S-Standard.xml:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/SG-ExtendedAttributeOffice.xml:
--------------------------------------------------------------------------------
1 |
2 | %GROUP_NAME%
3 | true
4 |
5 |
6 | %JSS_INVENTORY_NAME% 2016 Version
7 | 0
8 | and
9 | is not
10 | %VERSION%
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Office2016-IndividualApps/manual_trigger_office.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # This script runs a manual policy trigger to
4 | # allow the policie(s) associated with that
5 | # trigger to be executed.
6 |
7 | trigger_name="office-license"
8 |
9 | CheckBinary (){
10 |
11 | # Identify location of jamf binary.
12 |
13 | jamf_binary=`/usr/bin/which jamf`
14 |
15 | if [[ "$jamf_binary" == "" ]] && [[ -e "/usr/sbin/jamf" ]] && [[ ! -e "/usr/local/bin/jamf" ]]; then
16 | jamf_binary="/usr/sbin/jamf"
17 | elif [[ "$jamf_binary" == "" ]] && [[ ! -e "/usr/sbin/jamf" ]] && [[ -e "/usr/local/bin/jamf" ]]; then
18 | jamf_binary="/usr/local/bin/jamf"
19 | elif [[ "$jamf_binary" == "" ]] && [[ -e "/usr/sbin/jamf" ]] && [[ -e "/usr/local/bin/jamf" ]]; then
20 | jamf_binary="/usr/local/bin/jamf"
21 | fi
22 | }
23 |
24 | # Run the CheckBinary function to identify the location
25 | # of the jamf binary for the jamf_binary variable.
26 |
27 | CheckBinary
28 |
29 | $jamf_binary policy -trigger "$trigger_name"
30 |
31 | exit 0
--------------------------------------------------------------------------------
/Office2016-IndividualApps/payload/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arubdesu/microsoft-recipes/677aaa3a8b82f25fbb7c130177095d6c7841a03f/Office2016-IndividualApps/payload/.gitignore
--------------------------------------------------------------------------------
/Office2016Suite-SKUless/Office2016.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arubdesu/microsoft-recipes/677aaa3a8b82f25fbb7c130177095d6c7841a03f/Office2016Suite-SKUless/Office2016.png
--------------------------------------------------------------------------------
/Office2016Suite-SKUless/Office2016SuiteSKUless.download.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Microsoft Office 2016 SKU-less installer package.
7 |
8 | Set the REGION key to:
9 |
10 | 525133 for Americas (default)
11 | 532572 for Europe
12 | 532577 for Asia
13 | Identifier
14 | com.github.autopkg.microsoft-recipes.download.Office2016Suite
15 | Input
16 |
17 | NAME
18 | Office2016Suite
19 | REGION
20 | 525133
21 | DOWNLOAD_URL_BASE
22 | https://go.microsoft.com/fwlink/?linkid=
23 |
24 | MinimumVersion
25 | 0.4.1
26 | Process
27 |
28 |
29 | Processor
30 | OfficeSuiteSKULessVersionProvider
31 |
32 |
33 | Processor
34 | URLDownloader
35 | Arguments
36 |
37 | url
38 | %DOWNLOAD_URL_BASE%%REGION%
39 | filename
40 | %NAME%-%version%.pkg
41 |
42 |
43 |
44 | Processor
45 | EndOfCheckPhase
46 |
47 |
48 | Processor
49 | CodeSignatureVerifier
50 | Arguments
51 |
52 | input_path
53 | %pathname%
54 | expected_authority_names
55 |
56 | Developer ID Installer: Microsoft Corporation (UBF8T346G9)
57 | Developer ID Certification Authority
58 | Apple Root CA
59 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/Office2016Suite-SKUless/Office2016SuiteSKUless.ds.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Microsoft Office 2016 SKU-less installer package and then
7 | copies the package to the DeployStudio packages repository.
8 | Requires the microsoft-recipes repo (currently https://github.com/arubdesu/microsoft-recipes,
9 | eventually to be merged into autopkg/microsoft-recipes).
10 |
11 | Input keys:
12 | - REGION should be set to 525133 for Americas (default), 532572 for Europe, 532577 for Asia
13 | - DS_PKGS_PATH is the path for the Packages folder in the DeployStudio repository (trailing slash not required/desired).
14 | The path does not need to be on the same volume as the cache, as the pkg is being duplicated.
15 | - DS_NAME is what the final package will be called in DeployStudio, regardless of what was generated by the parent recipe.
16 | It defaults to %NAME% (just the app name).
17 |
18 | Identifier
19 | com.github.autopkg.microsoft-recipes.ds.Office2016Suite
20 | Input
21 |
22 | DS_PKGS_PATH
23 | /Volumes/DSServer/Users/Shared/Deploy/Packages
24 | DS_NAME
25 | %NAME%
26 |
27 | MinimumVersion
28 | 0.4.1
29 | ParentRecipe
30 | com.github.autopkg.microsoft-recipes.download.Office2016Suite
31 | Process
32 |
33 |
34 | Processor
35 | StopProcessingIf
36 | Arguments
37 |
38 | predicate
39 | download_changed == FALSE
40 |
41 |
42 |
43 | Processor
44 | Copier
45 | Arguments
46 |
47 | source_path
48 | %pathname%
49 | destination_path
50 | %DS_PKGS_PATH%/%DS_NAME%.pkg
51 | overwrite
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/Office2016Suite-SKUless/Office2016SuiteSKUless.install.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Download and install the latest Microsoft Office 2016
7 | SKU-less installer package.
8 |
9 | Set the REGION key to:
10 |
11 | 525133 for Americas (default)
12 | 532572 for Europe
13 | 532577 for Asia
14 | Identifier
15 | com.github.autopkg.microsoft-recipes.install.Office2016Suite
16 | Input
17 |
18 | NAME
19 | Office2016Suite
20 | REGION
21 | 525133
22 | DOWNLOAD_URL_BASE
23 | https://go.microsoft.com/fwlink/?linkid=
24 |
25 | MinimumVersion
26 | 0.4.1
27 | ParentRecipe
28 | com.github.autopkg.microsoft-recipes.download.Office2016Suite
29 | Process
30 |
31 |
32 | Processor
33 | Installer
34 | Arguments
35 |
36 | pkg_path
37 | %pathname%
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/Office2016Suite-SKUless/Office2016SuiteSKUless.jss.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Uses parent download recipe to download the latest Microsoft Office 2016 SKU-less installer package and import it into the JSS.
7 | Identifier
8 | com.github.autopkg.microsoft-recipes.jss.Office2016Suite
9 | Input
10 |
11 | NAME
12 | Office2016
13 | CATEGORY
14 | Microsoft
15 | POLICY_CATEGORY
16 | Testing
17 | POLICY_TEMPLATE
18 | %RECIPE_DIR%/PolicyTemplate.xml
19 | ICON
20 | %RECIPE_DIR%/Office2016.png
21 | GROUP_TEMPLATE
22 | %RECIPE_DIR%/SmartGroupTemplate.xml
23 | GROUP_NAME
24 | %NAME%-update-smart
25 | DESCRIPTION
26 | Office 2016 is a software suite for word processing, spreadsheets, presentations, graphics and more.
27 |
28 | MinimumVersion
29 | 0.4.1
30 | ParentRecipe
31 | com.github.autopkg.microsoft-recipes.download.Office2016Suite
32 | Process
33 |
34 |
35 | Arguments
36 |
37 | prod_name
38 | %NAME%
39 | category
40 | %CATEGORY%
41 | pkg_path
42 | %pathname%
43 | policy_category
44 | %POLICY_CATEGORY%
45 | policy_template
46 | %POLICY_TEMPLATE%
47 | self_service_icon
48 | %ICON%
49 | self_service_description
50 | %DESCRIPTION%
51 | groups
52 |
53 |
54 | name
55 | %GROUP_NAME%
56 | smart
57 |
58 | template_path
59 | %GROUP_TEMPLATE%
60 |
61 |
62 |
63 | Processor
64 | JSSImporter
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/Office2016Suite-SKUless/Office2016SuiteSKUless.lanrev.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Microsoft Office 2016 SKU-less installer package and uploads to LANrev.
7 |
8 | Set the REGION key to:
9 |
10 | 525133 for Americas (default)
11 | 532572 for Europe
12 | 532577 for Asia
13 | Identifier
14 | com.github.autopkg.microsoft-recipes.lanrev.Office2016Suite
15 | Input
16 |
17 | DOWNLOAD_URL_BASE
18 | https://go.microsoft.com/fwlink/?linkid=
19 | NAME
20 | Office2016Suite
21 | REGION
22 | 525133
23 |
24 | MinimumVersion
25 | 0.4.1
26 | ParentRecipe
27 | com.github.autopkg.microsoft-recipes.download.Office2016Suite
28 | Process
29 |
30 |
31 | Arguments
32 |
33 | dest_payload_path
34 | %RECIPE_CACHE_DIR%/%NAME%-%version%.amsdpackages
35 | import_pkg_to_servercenter
36 |
37 | sdpackages_ampkgprops_path
38 | %RECIPE_DIR%/%NAME%-Defaults.ampkgprops
39 | source_payload_path
40 | %pathname%
41 |
42 | Processor
43 | com.github.jbaker10.LANrevImporter/LANrevImporter
44 | SharedProcessorRepoURL
45 | https://github.com/jbaker10/LANrevImporter
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/Office2016Suite-SKUless/Office2016SuiteSKUless.munki.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Microsoft Office 2016 SKU-less installer package,
7 | appends the version to the end of the filename, and imports into Munki.
8 |
9 | Set the REGION key to:
10 |
11 | 525133 for Americas (default)
12 | 532572 for Europe
13 | 532577 for Asia
14 | Identifier
15 | com.github.autopkg.microsoft-recipes.munki.Office2016Suite
16 | ParentRecipe
17 | com.github.autopkg.microsoft-recipes.download.Office2016Suite
18 | Input
19 |
20 | NAME
21 | Office2016Suite
22 | REGION
23 | 525133
24 | DOWNLOAD_URL_BASE
25 | https://go.microsoft.com/fwlink/?linkid=
26 | MUNKI_REPO_SUBDIR
27 | apps/Office2016
28 | pkginfo
29 |
30 | blocking_applications
31 |
32 | Microsoft AutoUpdate
33 | Microsoft Outlook
34 | Microsoft Excel
35 | Microsoft PowerPoint
36 | Microsoft Word
37 | Microsoft OneNote
38 |
39 | catalogs
40 |
41 | testing
42 |
43 |
44 |
45 | MinimumVersion
46 | 0.4.1
47 | Process
48 |
49 |
50 | Arguments
51 |
52 | pkg_path
53 | %pathname%
54 | repo_subdirectory
55 | %MUNKI_REPO_SUBDIR%
56 |
57 | Processor
58 | MunkiImporter
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/Office2016Suite-SKUless/OfficeSuiteSKULessVersionProvider.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | #
3 | # Copyright 2016 Allister Banks, lovingly based on work by Hannes Juutilainen
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | import urllib2
18 | import xml.etree.ElementTree as ET
19 |
20 | from autopkglib import Processor, ProcessorError
21 |
22 |
23 | __all__ = ["OfficeSuiteSKULessVersionProvider"]
24 |
25 | FEED_URL = "http://macadmins.software/versions.xml"
26 |
27 | class OfficeSuiteSKULessVersionProvider(Processor):
28 | """Provides the version of the latest SKU-Less Office 2016 Suite release"""
29 | input_variables = {}
30 | output_variables = {
31 | "version": {
32 | "description": "Version of the latest SKU-Less Office 2016 Suite release.",
33 | },
34 | }
35 | description = __doc__
36 |
37 | def get_version(self, FEED_URL):
38 | """Parse the macadmins.software/versions.xml feed for the latest O365 version number"""
39 | try:
40 | raw_xml = urllib2.urlopen(FEED_URL)
41 | xml = raw_xml.read()
42 | except BaseException as e:
43 | raise ProcessorError("Can't download %s: %s" % (FEED_URL, e))
44 | version = ''
45 | root = ET.fromstring(xml)
46 | for vers in root.iter('latest'):
47 | version = vers.find('o365').text
48 | return version
49 |
50 | def main(self):
51 | self.env["version"] = self.get_version(FEED_URL)
52 | self.output("Found Version Number %s" % self.env["version"])
53 |
54 |
55 | if __name__ == "__main__":
56 | processor = OfficeSuiteSKULessVersionProvider()
57 | processor.execute_shell()
58 |
--------------------------------------------------------------------------------
/Office2016Suite-SKUless/PolicyTemplate.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Install Latest %PROD_NAME%
4 | true
5 | Ongoing
6 |
7 | %POLICY_CATEGORY%
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | true
21 | Install %VERSION%
22 | %SELF_SERVICE_DESCRIPTION%
23 |
24 |
25 | true
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Office2016Suite-SKUless/SmartGroupTemplate.xml:
--------------------------------------------------------------------------------
1 |
2 | %group_name%
3 | true
4 |
5 |
6 | Application Title
7 | 0
8 | and
9 | is
10 | %JSS_INVENTORY_NAME%
11 |
12 |
13 | Application Version
14 | 1
15 | and
16 | is not
17 | %VERSION%
18 |
19 |
20 | Computer Group
21 | 2
22 | and
23 | member of
24 | Testing
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/OneDrive-Standalone/OneDrive.pkg.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest OneDrive standalone version installer package.
7 | Identifier
8 | com.github.microsoft-recipes.pkg.OneDriveStandalone
9 | Input
10 |
11 | DOWNLOAD_URL
12 | https://go.microsoft.com/fwlink/?linkid=823060
13 | NAME
14 | OneDrive
15 |
16 | MinimumVersion
17 | 0.6.1
18 | Process
19 |
20 |
21 | Arguments
22 |
23 | filename
24 | %NAME%.pkg
25 | url
26 | %DOWNLOAD_URL%
27 |
28 | Processor
29 | URLDownloader
30 |
31 |
32 | Processor
33 | EndOfCheckPhase
34 |
35 |
36 | Arguments
37 |
38 | expected_authorities
39 |
40 | Developer ID Installer: Microsoft Corporation (UBF8T346G9)
41 | Developer ID Certification Authority
42 | Apple Root CA
43 |
44 | input_path
45 | %pathname%
46 |
47 | Processor
48 | CodeSignatureVerifier
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/OneDrive-Standalone/OneDrive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arubdesu/microsoft-recipes/677aaa3a8b82f25fbb7c130177095d6c7841a03f/OneDrive-Standalone/OneDrive.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # microsoft-recipes
2 |
3 | __Unofficial (meaning not maintained by Microsoft) Office (and Microsoft-related) Recipes for AutoPkg__
4 |
5 | This repo contains update recipes for Lync (soon to be rebranded ~~Communicator~~ ~~Messenger~~ [SkypeForBusiness](https://support.office.com/en-us/article/Lync-is-now-Skype-for-Business-—-see-what-s-new-aba02d7e-c801-4a82-bccd-e7207240f612)), AutoUpdate 3.x (AKA MAU), and the Office 2016 suite. (OneNote can be obtained from the Mac App Store, so it is only partially included.)
6 |
7 | ### What the who?
8 |
9 | These used to be located in the `autopkg/recipes` and `autopkg/arubdesu-recipes` repos, but they grew in number and variety to the point that it made sense to gather them all in one place.
10 |
11 | These are more than just traditional 'update' recipes - while the original intention of autopkg was to grab updates by using mechanisms that are as-close-as-possible to the native polling an apps auto-update functionality would use, Office 2016 has many deployment permutations to consider. All of the products referenced above have 'combo' update flavored packages, which install the entire product. MAU and Lync are less of a concern, as they do not require licensing... but the story becomes interesting with Office 2016:
12 |
13 | - While Office 2016 can be deployed in many ways, it comes in several different flavored installers:
14 | - Standalone, meaning each individual product install has a bundled version of MAU
15 | - Volume Licensed (VL), per-product or full suite installers
16 | - 'Combo' updates, similar to how Lync updates are full, potentially-installable versions
17 | - 'Delta' updates, which are slated for release with 15.19
18 | - And finally, there is the new concept of a 'SKU-less' installer, meaning a version of the suite that can be installed (except in an AutoDMG workflow) and licensed for O365 or [volume licensing](https://clburlison.com/demystify-office2016/#vl-serializer) after the fact.
19 |
20 | Besides the VL suite installer and the SKU-less version, the Standalone flavor can also be licensed because it contains the proper support files.
21 |
22 | 
23 |
24 | ### All the things!
25 |
26 | Like Pokemon, we've gotta catch them all. Contained in this repo is a custom AutoPkg processor that allows you to fetch standalone, combo, or delta flavors of the Office 2016 apps, and recipes that can be customized via [overrides](https://github.com/autopkg/autopkg/wiki/FAQ#can-i-change-a-recipe-to-do-x-instead-of-y-do-i-use-overrides-for-that) to grab the one(s) you want. This functionality was enabled by @ftiff by adapting code worked on by @tvsutton, @arubdesu, and originally authored by @gregneagle.
27 |
28 | A separate set of recipes operate on the SKU-less suite. The included [JSS-README](Office2016-IndividualApps/JSS-README.md) describes a workflow for deploying the 2016 apps (which require you to override the MSVERSION key to be 'Standalone') along with policy templates that even enable it to be licensed if you supply the 15.17+ bundled 'VL Serializer' package.
29 |
30 | ### ...But, can we really [have it all?](https://twitter.com/manwhohasitall/status/664351940692738048)
31 |
32 | If by that you mean you'd like to fetch multiple flavored (delta/combo/standalone) packages from the same AutoPkg setup, [yes we can](https://github.com/autopkg/autopkg/wiki/FAQ#can-i-fetch-multiple-variations-of-the-same-product-eg-office-2016-delta-updatesfull-installers).
33 |
34 | #### Standalone/SKU-Less Installer(s) + Munki Note
35 |
36 | For those who have left MAU out of their deployment and want to continue doing so, you'll want to add [ChoiceChangesXML](https://github.com/munki/munki/wiki/ChoiceChangesXML) to your override's pkginfo stanza, like so:
37 |
38 | ```
39 | installer_choices_xml
40 |
41 |
42 | attributeSetting
43 | 0
44 | choiceAttribute
45 | selected
46 | choiceIdentifier
47 | com.microsoft.autoupdate
48 |
49 |
50 | ```
51 |
--------------------------------------------------------------------------------
/SkypeForBusiness/SkypeForBusiness.munki.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest version of Skype for Business and imports it into Munki.
7 | Identifier
8 | com.github.microsoft-recipes.munki.SkypeForBusiness
9 | Input
10 |
11 | MUNKI_REPO_SUBDIR
12 | apps
13 | NAME
14 | Skype for Business
15 | pkginfo
16 |
17 | blocking_applications
18 |
19 | Skype for Business.app
20 |
21 | catalogs
22 |
23 | testing
24 |
25 | description
26 | Microsoft's business solution for videoconferencing and collaboration.
27 | developer
28 | Microsoft
29 | display_name
30 | Skype for Business
31 | name
32 | %NAME%
33 | unattended_install
34 |
35 |
36 |
37 | MinimumVersion
38 | 0.6.1
39 | ParentRecipe
40 | com.github.microsoft-recipes.pkg.SkypeForBusiness
41 | Process
42 |
43 |
44 | Arguments
45 |
46 | pkg_path
47 | %pathname%
48 | repo_subdirectory
49 | %MUNKI_REPO_SUBDIR%
50 |
51 | Processor
52 | MunkiImporter
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/SkypeForBusiness/SkypeForBusiness.pkg.recipe:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Description
6 | Downloads the latest Skype for Business installer package.
7 | Identifier
8 | com.github.microsoft-recipes.pkg.SkypeForBusiness
9 | Input
10 |
11 | DOWNLOAD_URL
12 | https://go.microsoft.com/fwlink/?linkid=832978
13 | NAME
14 | SkypeForBusiness
15 |
16 | MinimumVersion
17 | 0.6.1
18 | Process
19 |
20 |
21 | Arguments
22 |
23 | filename
24 | %NAME%.pkg
25 | url
26 | %DOWNLOAD_URL%
27 |
28 | Processor
29 | URLDownloader
30 |
31 |
32 | Processor
33 | EndOfCheckPhase
34 |
35 |
36 | Arguments
37 |
38 | expected_authorities
39 |
40 | Developer ID Installer: Microsoft Corporation (UBF8T346G9)
41 | Developer ID Certification Authority
42 | Apple Root CA
43 |
44 | input_path
45 | %pathname%
46 |
47 | Processor
48 | CodeSignatureVerifier
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/SkypeForBusiness/SkypeForBusiness.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arubdesu/microsoft-recipes/677aaa3a8b82f25fbb7c130177095d6c7841a03f/SkypeForBusiness/SkypeForBusiness.png
--------------------------------------------------------------------------------