« [Printer]ネットワークプリンタ(メモ保存) | トップページ | [NSDate]普段使いのサブルーチン(令和対応版) »

[mobileconfig]com.apple.mcxprinting

Device Management Profile
Printing
The payload for configuring printers.
https://developer.apple.com/documentation/devicemanagement/printing?language=objc

私の環境では期待値動作しないのでトホホな感じですが
(プリンタと通信出来ないと登録できないのかも?しれん)
文法的にはあってる『はず』なんだけど…



#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

property refMe : a reference to current application
property refNSString : a reference to refMe's NSString
property refNSData : a reference to refMe's NSData
property refNSURL : a reference to refMe's NSURL
property refNSMutableArray : a reference to refMe's NSMutableArray
property refNSMutableDictionary : a reference to refMe's NSMutableDictionary
property refNSPropertyListSerialization : a reference to refMe's NSPropertyListSerialization

set strPayloadType to "com.apple.mcxprinting" as text
set strPayloadDisplayName to "com.apple.mcxprinting" as text
set strPayloadOrganization to "com.cocolog-nifty.quicktimer" as text
set strPayloadDescription to "プリンタ関連の設定です" as text
set strConsentTextDefault to "日本語の詳しい解説例:この設定は削除しないでください
プリンタの設定です" as text
set strConsentTextEn to "Do not remove this setting" as text

set numPayloadVersion to 1 as number
set numTargetDeviceType to 5 as number
(*
0 = Any/unspecified
1 = iPhone/iPad/iPod Touch
2 = Apple Watch
3 = HomePod
4 = Apple TV
5 = Mac
*)

###
set strFooterFontName to "ArialUnicodeMS" as text
set strFooterFontSize to "8" as text
###
set strDisplayNamePrinterList to "PsPrinterAcrobat9J" as text
set strDeviceURIPrinterList to "ipp://localhost/" as text
set strLocationPrinterList to "PsPrinterAcrobat9J" as text
set strModelPrinterList to "AdobeAcrobat9J" as text
set strPPDURLPrinterList to "file:///Library/Printers/PPDs/Contents/Resources/ADPDF9J.PPD" as text
set boolPrinterLockedPrinterList to true as boolean
(*
ADPDF9J.PPDはこちらから
https://quicktimer.cocolog-nifty.com/icefloe/2022/02/post-844557.html
*)
########################
####出力ファイル関連
set strRelativePath to ("~/Desktop/") as text
set ocidRelativePath to refNSString's stringWithString:strRelativePath
set ocidFullPath to ocidRelativePath's stringByStandardizingPath()
set ocidFullPathURL to refMe's NSURL's fileURLWithPath:ocidFullPath
set aliasFullPathURL to ocidFullPathURL as alias

set strFileName to ("" & strPayloadDisplayName & ".mobileconfig") as text
##set strFileName to ("" & strPayloadDisplayName & ".plist") as text
set recordConsentText to {default:strConsentTextDefault, jp:strConsentTextDefault} as record
#set recordConsentText to {default:strConsentTextDefault, jp:strConsentTextDefault, en:strConsentTextEn} as record
######
set aliasSaveFilePath to choose file name with prompt "ファイル名を付けてください" default name strFileName default location (aliasFullPathURL)
set strSaveFilePath to POSIX path of aliasSaveFilePath as text
###NSStringにして
set ocidPosixPath to refNSString's stringWithString:strSaveFilePath
##NSStringフルパス
set ocidPosixFullPath to ocidPosixPath's stringByStandardizingPath

########################
#######PayloadContentDictPrinter
set ocidPayloadContentPrinter to refNSMutableDictionary's alloc()'s initWithCapacity:0
tell ocidPayloadContentPrinter
ocidPayloadContentPrinter's setObject:(strDisplayNamePrinterList as text) forKey:"DisplayName"
ocidPayloadContentPrinter's setObject:(strDeviceURIPrinterList as text) forKey:"DeviceURI"
ocidPayloadContentPrinter's setObject:(strLocationPrinterList as text) forKey:"Location"
ocidPayloadContentPrinter's setObject:(strModelPrinterList as text) forKey:"Model"
ocidPayloadContentPrinter's setObject:(strPPDURLPrinterList as text) forKey:"PPDURL"
ocidPayloadContentPrinter's setObject:(boolPrinterLockedPrinterList as boolean) forKey:"PrinterLocked"
end tell

########################
#######PayloadContentArraySub
set ocidPayloadContentSub to refNSMutableArray's alloc()'s initWithCapacity:0
tell ocidPayloadContentSub
ocidPayloadContentSub's addObject:(ocidPayloadContentPrinter as record)
end tell
set recordDefaultPrinter to {DeviceURI:strDeviceURIPrinterList, DisplayName:strDisplayNamePrinterList} as record

########################
#######PayloadContentDictMain
set ocidPayloadContentMain to refNSMutableDictionary's alloc()'s initWithCapacity:0
set strPayloadUUID to doUUIDgen() as text
set strPayloadIdentifier to ("" & strPayloadDisplayName & "." & strPayloadUUID & "") as text
tell ocidPayloadContentMain

ocidPayloadContentMain's setObject:(ocidPayloadContentSub as list) forKey:"UserPrinterList"

ocidPayloadContentMain's setObject:(true as boolean) forKey:"AllowLocalPrinters"
ocidPayloadContentMain's setObject:(true as boolean) forKey:"RequireAdminToAddPrinters"
ocidPayloadContentMain's setObject:(false as boolean) forKey:"RequireAdminToPrintLocally"
ocidPayloadContentMain's setObject:(false as boolean) forKey:"ShowOnlyManagedPrinters"

ocidPayloadContentMain's setObject:(recordDefaultPrinter as record) forKey:"DefaultPrinter"

ocidPayloadContentMain's setObject:(false as boolean) forKey:"PrintMACAddress"
ocidPayloadContentMain's setObject:(false as boolean) forKey:"PrintFooter"
ocidPayloadContentMain's setObject:(strFooterFontName as text) forKey:"FooterFontName"
ocidPayloadContentMain's setObject:(strFooterFontSize as text) forKey:"FooterFontSize"

ocidPayloadContentMain's setObject:strPayloadDisplayName forKey:"PayloadDisplayName"
ocidPayloadContentMain's setObject:strPayloadDescription forKey:"PayloadDescription"
ocidPayloadContentMain's setObject:(strPayloadUUID as text) forKey:"PayloadUUID"
ocidPayloadContentMain's setObject:(strPayloadIdentifier as text) forKey:"PayloadIdentifier"
ocidPayloadContentMain's setObject:(strPayloadOrganization as text) forKey:"PayloadOrganization"
ocidPayloadContentMain's setObject:(strPayloadType as text) forKey:"PayloadType"
ocidPayloadContentMain's setObject:(numPayloadVersion as number) forKey:"PayloadVersion"

end tell

########################
#######PayloadContentArray
set strPayloadUUID to doUUIDgen() as text
set strPayloadIdentifier to ("" & strPayloadDisplayName & "." & strPayloadUUID & "") as text
set ocidPayloadContentArray to refNSMutableArray's alloc()'s initWithCapacity:0
tell ocidPayloadContentArray
ocidPayloadContentArray's addObject:ocidPayloadContentMain
end tell

########################
#######ROOT Dict
set strPayloadUUID to doUUIDgen() as text
set strPayloadIdentifier to ("" & strPayloadDisplayName & "." & strPayloadUUID & "") as text
set ocidPlistData to refNSMutableDictionary's alloc()'s initWithCapacity:0
tell ocidPlistData
#####PayloadContentはここにArrayで挿入
ocidPlistData's setObject:ocidPayloadContentArray forKey:"PayloadContent"
#####
ocidPlistData's setObject:strPayloadDisplayName forKey:"PayloadDisplayName"
ocidPlistData's setObject:strPayloadDescription forKey:"PayloadDescription"
ocidPlistData's setObject:recordConsentText forKey:"ConsentText"
ocidPlistData's setObject:(strPayloadUUID as text) forKey:"PayloadUUID"
ocidPlistData's setObject:(strPayloadIdentifier as text) forKey:"PayloadIdentifier"
ocidPlistData's setObject:(strPayloadOrganization as text) forKey:"PayloadOrganization"
ocidPlistData's setObject:"Configuration" forKey:"PayloadType"
ocidPlistData's setObject:"System" forKey:"PayloadScope"
ocidPlistData's setObject:(numTargetDeviceType as number) forKey:"TargetDeviceType"
ocidPlistData's setObject:(false as boolean) forKey:"PayloadRemovalDisallowed"
#ocidPlistData's setObject:(false as boolean) forKey:"HasRemovalPasscode"
#ocidPlistData's setObject:(false as boolean) forKey:"IsEncrypted"
ocidPlistData's setObject:(numPayloadVersion as number) forKey:"PayloadVersion"
end tell


######################
###定型どちらか選ぶ
###バイナリー形式
set ocidBinplist to refMe's NSPropertyListBinaryFormat_v1_0
###XML形式
set ocidXmlplist to refMe's NSPropertyListXMLFormat_v1_0
####書き込み用にバイナリーデータに変換
set ocidPlistEditData to refMe's NSPropertyListSerialization's dataWithPropertyList:ocidPlistData format:ocidXmlplist options:0 |error|:(missing value)
####書き込み
####ocidPlistEditData's writeToFile:ocidPosixFullPath atomically:true
set boolWritetoUrlArray to ocidPlistEditData's writeToFile:ocidPosixFullPath options:0 |error|:(reference)
set ocidWriteToUrlResults to item 1 of boolWritetoUrlArray
set ocidErrorResults to item 2 of boolWritetoUrlArray
if ocidWriteToUrlResults is true then
ocidPlistEditData's release()
ocidPlistData's release()
else
try
log ocidWriteToUrlResults's localizedDescription() as text
log ocidWriteToUrlResults's localizedFailureReason() as text
log ocidWriteToUrlResults's localizedRecoverySuggestion() as text
log ocidWriteToUrlResults's localizedRecoveryOptions() as text
log ocidWriteToUrlResults's recoveryAttempter() as text
log ocidWriteToUrlResults's helpAnchor() as text
end try
log "ファイルの書き込みに失敗しました"
end if

-->テキスト形式のUUIDを返します
to doUUIDgen()
set ocidConcreteUUID to refMe's NSUUID's UUID()
set ocidUUIDString to ocidConcreteUUID's UUIDString()
set strUUIDString to ocidUUIDString as text
return strUUIDString
end doUUIDgen

|

« [Printer]ネットワークプリンタ(メモ保存) | トップページ | [NSDate]普段使いのサブルーチン(令和対応版) »

Admin Printer」カテゴリの記事

Admin Mobileconfig」カテゴリの記事

Admin Device Management」カテゴリの記事