สคริปต์ Python ที่เข้ากันได้กับ Windows และ OS X ที่ดึง Boot Camp ESD ("การจำหน่ายซอฟต์แวร์ทางอิเล็กทรอนิกส์") จาก Apple หรือเซิร์ฟเวอร์อัปเดตซอฟต์แวร์ของคุณสำหรับ Mac รุ่นเฉพาะ โดยจะคลายไฟล์เก็บถาวรหลายชั้นภายในแพ็คเกจแบบเรียบ และหากสคริปต์ทำงานบน Windows ด้วยตัวเลือก --install
ก็จะเรียกใช้ตัวติดตั้ง MSI 64 บิตด้วย
บน Windows ไฟล์เก็บถาวรจะถูกแตกไฟล์โดยใช้ 7-Zip และ 7-Zip MSI จะถูกดาวน์โหลดและติดตั้ง และลบออกในภายหลังหาก Brigadier ติดตั้งไว้ เครื่องมือนี้เคยใช้ dmg2img เพื่อแยกไฟล์จากไฟล์ WindowsSupport.dmg
ของ Apple แต่ 7-Zip เวอร์ชันล่าสุดได้รวมการรองรับ DMG อย่างสมบูรณ์มากขึ้น ดังนั้น dmg2img จึงดูเหมือนจะไม่จำเป็นอีกต่อไป
สิ่งนี้เขียนขึ้นด้วยเหตุผลสองประการ:
เดิมได้รับการออกแบบมาให้ทำงานเป็นขั้นตอนหลังการถ่ายภาพสำหรับการปรับใช้ Boot Camp บน Mac แต่เนื่องจากต้องใช้การเชื่อมต่อเครือข่าย ไดรเวอร์เครือข่ายจึงต้องมีอยู่ในระบบอยู่แล้ว (ดูคำเตือนด้านล่าง)
Brigadier สร้างผลลัพธ์ที่ไม่ค่อยดีนักด้วยการผสมผสานแพ็คเกจไดรเวอร์และฮาร์ดแวร์รุ่นต่างๆ ใน Boot Camp 5 เวอร์ชันล่าสุด และตอนนี้กับ Boot Camp 6 แล้ว บางคนได้ยืนยันปัญหากับ Boot Camp 6 และ Windows 7 โดยทั่วไปแล้ว ดังนั้นสิ่งเหล่านี้ อาจไม่ใช่ความผิดของนายพลจัตวาโดยสิ้นเชิง การตรวจสอบ Boot Camp setup.exe
บางอย่างบ่งชี้ให้ฉันเห็นว่าไฟล์ปฏิบัติการนี้ทำงานได้หลายอย่างและตั้งค่าสภาพแวดล้อมบางอย่างสำหรับการดำเนินการในที่สุดของ BootCamp.msi
ซึ่งเราไม่สามารถรับได้เสมอไปด้วยการเรียกใช้ msiexec
แบบง่าย ๆ ของ Brigadier เพื่อติดตั้ง เอ็มไอโดยตรง
ฉันยังไม่มีความรู้เพียงพอเกี่ยวกับ Windows ภายในที่จะเข้าใจวิธีการดำเนินการเวอร์ชันอัตโนมัติเต็มรูปแบบของสิ่งที่ setup.exe ทำจริง ๆ (นอกเหนือจากการเรียกใช้ msiexec /i /qr
บน MSI ในที่สุด) ตัวอย่างเช่น การประชาสัมพันธ์นี้ชี้ให้เห็นว่าสามารถรับผลลัพธ์ที่ดีกว่าได้โดยใช้ตัวเลือก "เงียบ" ที่แตกต่างกันกับ msiexec
แต่การแยกส่วนของ setup.exe
แสดงให้เห็นว่ากำลังดำเนินการจริง /qr
เช่นเดียวกับโค้ดในสาขาหลักปัจจุบัน คำถามประเภทนี้เป็นคำถามที่ฉันรู้สึกว่าไม่มีความรู้เพียงพอที่จะพยายามตอบ
มีปัญหาแปลก ๆ ที่ฉันเคยพบเมื่อสองสามปีก่อนเช่นกัน ตัวอย่างเช่น โปรแกรมติดตั้งไดรเวอร์ตัวเดียว (เกี่ยวข้องกับชิปเซ็ต Intel) ที่แสดงข้อผิดพลาด WinRAR SFX หลายครั้ง เนื่องจากพยายามเรียกใช้งานไฟล์การแปลของไดรเวอร์ทั้งหมดตามลำดับ (ซึ่งไม่สามารถเรียกใช้งานได้ด้วยซ้ำ) เพียงคลิกผ่านกล่องโต้ตอบเหล่านี้ในที่สุดจะทำให้การติดตั้งดำเนินต่อไป แต่กระบวนการจะถูกบล็อกจนกว่าจะเป็นเช่นนั้น ข้อผิดพลาดนี้จะไม่เกิดขึ้นเมื่อผู้ใช้รัน setup.exe
ด้วยตนเอง แต่ทำไมฉันถึงไม่เข้าใจ
แม้ว่าฉันจะหวังว่าจะสามารถแก้ไขปัญหาเหล่านี้ได้ แต่กรณีการใช้งานสภาพแวดล้อมของฉันสำหรับห้องปฏิบัติการดูอัลบูตกำลังลดลง ดังนั้นจึงเป็นเรื่องยากที่จะกำหนดเวลาที่ต้องใช้ในการค้นคว้าปัญหาเหล่านี้เพิ่มเติม หากใครก็ตามที่มีความรู้เกี่ยวกับการย้อนกลับ setup.exe
เช่นตัวติดตั้งตัวติดตั้งและตัวติดตั้ง MSI และการดูแลระบบ Windows โดยทั่วไป สนใจที่จะจัดการกับการสนับสนุนที่เสียหายอยู่บ้างในปัจจุบันสำหรับการติดตั้งไดรเวอร์ Boot Camp แบบไม่ต้องโต้ตอบในเครื่องมือนี้ ฉันจะ รักความช่วยเหลือ! มีคุณสมบัติตัวติดตั้งหลายประการใน BootCamp.msi
ที่อาจช่วยแก้ไขปัญหานี้ได้ด้วยเช่นกัน
เรียกใช้ brigadier โดยไม่มีตัวเลือกให้ดาวน์โหลดและคลายแพ็ก ESD ที่ใช้กับโมเดลนี้ ไปยังไดเร็กทอรีการทำงานปัจจุบัน บน OS X ESD จะถูกเก็บไว้ในรูปแบบ .dmg เพื่อให้เขียนลงแผ่นดิสก์ได้ง่าย บน Windows ไฟล์ไดรเวอร์จะถูกแตกออกมา
เรียกใช้ด้วยตัวเลือก --model
เพื่อระบุรุ่นอื่นในรูปแบบ MacPro3,1
ฯลฯ
รันด้วยตัวเลือก --install
เพื่อดาวน์โหลดและติดตั้ง โดยลบไดรเวอร์หลังการติดตั้ง เห็นได้ชัดว่าใช้งานได้กับ Windows เท่านั้น ตัวเลือกนี้จัดทำขึ้นสำหรับการติดตั้งไดรเวอร์ Boot Camp แบบอัตโนมัติ
วางไฟล์ brigadier.plist
ในโฟลเดอร์เดียวกับสคริปต์เพื่อแทนที่ URL .sucatalog เพื่อชี้ไปยังแค็ตตาล็อกเซิร์ฟเวอร์การอัปเดตซอฟต์แวร์ภายใน (รายละเอียดด้านล่าง)
ตัวเลือกเพิ่มเติมที่แสดงด้านล่าง
คุณสามารถค้นหาไบนารีที่คอมไพล์ไว้ล่วงหน้าสำหรับ Windows ได้ในพื้นที่เผยแพร่ สิ่งนี้มีประโยชน์หากคุณยังไม่ได้ติดตั้ง Python บน Windows สิ่งนี้ถูกสร้างขึ้นโดยใช้ PyInstaller รายละเอียดเพิ่มเติมเกี่ยวกับการสร้างมันด้วยตัวเองด้านล่าง
นอกจากนี้ยังสามารถเรียกใช้ได้โดยตรงจากการชำระเงิน Git บน OS X หรือ Windows
นอกเหนือจากตัวเลือกบรรทัดคำสั่งบางส่วนแล้ว:
Usage: brigadier [options]
Options:
-h, --help show this help message and exit
-m MODEL, --model=MODEL
System model identifier to use (otherwise this
machine's model is used).
-i, --install After the installer is downloaded, perform the install
automatically. Can be used on Windows only.
-o OUTPUT_DIR, --output-dir=OUTPUT_DIR
Base path where the installer files will be extracted
into a folder named after the product, ie.
'BootCamp-041-1234'. Uses the current directory if
this option is omitted.
-k, --keep-files Keep the files that were downloaded/extracted. Useful
only with the '--install' option on Windows.
คุณยังสามารถสร้างไฟล์ plist XML brigadier.plist
และวางไว้ในไดเร็กทอรีเดียวกันกับสคริปต์ได้ ปัจจุบันรองรับคีย์เดียว: CatalogURL
ซึ่งเป็นสตริงที่ชี้ไปยัง URL แค็ตตาล็อก SUS ภายในที่มีแพ็คเกจ BootCampESD ดูตัวอย่างใน repo นี้
เป็นเรื่องปกติที่จะดำเนินการไดรเวอร์ Boot Camp ในระหว่างขั้นตอนหลังการถ่ายภาพ Sysprep เพื่อให้สามารถปรับใช้อิมเมจเดียวกันในรุ่นต่างๆ ได้โดยไม่ต้องคำนึงถึงโมเดลและแพ็คเกจ Boot Camp ที่จำเป็น Brigadier ดูเหมือนว่าจะทำงานในบริบทของ SysPrep FirstLogonCommand
มีวิธีแก้ไขปัญหาหนึ่งที่ดำเนินการโดยสคริปต์เมื่อทำงานในสถานการณ์นี้ ซึ่งโดยปกติการทำงานปัจจุบันจะเป็น windowssystem32
ในการทดสอบของฉันกับระบบ 64 บิต MSI จะหยุดพยายามค้นหาส่วนประกอบตัวติดตั้ง เนื่องจาก Windows แยกโฟลเดอร์ System32
ลงใน SysWoW64
สำหรับแอปพลิเคชัน 32 บิต เมื่อสคริปต์ตรวจพบไดเร็กทอรีการทำงานนี้โดยไม่มีตัวเลือก --output-dir
แทนที่มัน สคริปต์จะตั้งค่าไดเร็กทอรีเอาต์พุตไปที่รูทของระบบ เช่น %SystemRoot%
.
ตามค่าเริ่มต้น เมื่อใช้ --install
มันจะล้างไฟล์ที่แยกออกมาหลังการติดตั้ง เว้นแต่จะมีตัวเลือก --keep-files
ไว้ ดังนั้น เว้นแต่คุณต้องการเก็บไฟล์ไว้รอบๆ คุณก็ไม่จำเป็นต้องล้างข้อมูลหลังจากนั้น .
หากคุณต้องการเรียกใช้เป็นสคริปต์ Python มาตรฐาน คุณจะต้องมี Python สำหรับ Windows (ซึ่งทดสอบด้วยเวอร์ชัน 2.7 ล่าสุด) เพื่อที่จะรันสคริปต์
หากคุณต้องการสร้างมันขึ้นมาเอง คุณสามารถใช้สคริปต์การสร้างที่ให้มาด้วย ต้องใช้ Python และเวอร์ชันที่ตรงกันของ pywin32 มันจัดการการดาวน์โหลด PyInstaller ให้กับคุณ เพียงเรียกใช้โดยไม่มีข้อโต้แย้ง และมันจะสร้างไฟล์ zip ในไดเร็กทอรีการทำงานปัจจุบัน:
c:python27python build_windows_exe.py
บน OS X เรามีคำสั่ง hdiutil และ pkgutil ดั้งเดิมเพื่อทำการแตกไฟล์ไดรเวอร์ บน Windows เรา:
WindowsSupport.dmg
ภายใน pkgC:WindowsINF
บนอิมเมจ sysprepped โฟลเดอร์นี้เป็นตำแหน่งการค้นหาเริ่มต้นสำหรับไดรเวอร์อุปกรณ์ และควรตรวจจับและติดตั้งไดรเวอร์ที่นี่โดยอัตโนมัติสำหรับฮาร์ดแวร์ที่ไม่รู้จักทั้งหมด คุณยังสามารถแก้ไขคีย์รีจิสทรี DevicePath
เพื่อเพิ่มตำแหน่งที่กำหนดเองได้ แต่การใช้โฟลเดอร์ INF
ที่มีอยู่หมายความว่าไม่จำเป็นต้องทำการเปลี่ยนแปลงอื่นใดนอกจากสำเนาไฟล์เพื่ออัปเดตไดรเวอร์ของรูปภาพที่มีอยู่ ดังนั้นจึงสามารถทำได้โดยไม่ต้องกู้คืนรูปภาพและบูตจริง ๆ เพียงเพื่อติดตั้งไดรเวอร์ การให้บริการไดรเวอร์แบบออฟไลน์โดยใช้ Windows และ DISM เป็นเรื่องง่ายสำหรับอิมเมจ WIM แต่ผู้ดูแลระบบส่วนใหญ่มีแนวโน้มว่าจะไม่ปรับใช้อิมเมจ WIM กับ Mac แต่ใช้เครื่องมือที่รวม ntfsprogs ไว้brigadier.plist
จะสนับสนุนการแทนที่ URL เหล่านี้ด้วยสำเนาของคุณเองที่เก็บไว้บนเว็บเซิร์ฟเวอร์ส่วนตัวFirstTimeRun
ที่ HKEY_CURRENT_USERSoftwareApple Inc.Apple Keyboard Support
เพื่อปิดใช้งานป๊อปอัปวิธีใช้ Boot Camp ที่เปิดตัวครั้งแรก และในขณะนี้ยังไม่มีตัวเลือกให้ปิดใช้งานลักษณะการทำงานนี้