อัปเดต, กรกฎาคม 2561 : ข้อมูลสรุปที่บีบอัดอย่างมากของข้อมูลด้านล่างมีอยู่ในสแต็คโอเวอร์โฟลว์: ประโยชน์หลักของ MSI ( "executive summary"
- แปลก ๆ )
ฉันได้ทำงานในการพัฒนาเป็นผู้จัดการการเปิดตัว , สร้างวิศวกร , นักพัฒนาติดตั้งและเป็นแพกเกจแอพลิเคชันและวิศวกรการใช้งานในองค์กรขนาดใหญ่
นี่คือการตรวจสอบคุณลักษณะที่ดีที่สุด (และแย่ที่สุด) แนวคิดและโลกแห่งความเป็นจริงของ MSI ส่วนใหญ่ปัญหาการออกแบบทั่วไปพบในไฟล์ MSI นั้นจะเป็นคำตอบที่แยกต่างหากด้านล่าง ไม่ได้แกล้งทำเป็นว่าเสร็จสมบูรณ์ - จริงๆแล้วเป็นเพียง "สมองที่ยุ่งเหยิง" - ตั้งใจว่า "สิ่งที่ไม่สามารถหาได้ในหนังสือ" (อาจเป็นเพราะเหตุผลที่ดี)
ผมยังต้องการที่จะแนะนำนี้บทความ MSDNเป็นอ่านที่ดี: การติดตั้ง Windows: ประโยชน์และการดำเนินงานสำหรับผู้ดูแลระบบ
มาตรฐาน:
กล่าวอีกนัยหนึ่งMSI เป็นเรื่องเกี่ยวกับมาตรฐานและการจัดการกับ " กลิ่นกลิ่น " ของเทคโนโลยีตัวติดตั้งรุ่นเก่า ชุดรวมของการออกแบบสถาปัตยกรรมการติดตั้งที่ไม่ดีซึ่งทำให้เกิดปัญหาการปรับใช้ซ้ำ
ภาพรวม MSI มอบกรอบงานที่ครอบคลุมและเป็นมาตรฐานสำหรับผู้ติดตั้งซึ่งรวมถึงการถอนการติดตั้งและคุณสมบัติในตัวและตัวเลือกสำหรับการทำงานแบบเงียบด้วยGUI มาตรฐานซึ่งสามารถเรียกใช้จากระยะไกลได้
คุณสมบัติเหล่านี้เพียงอย่างเดียวเป็นการปรับปรุงใหญ่กว่าเทคโนโลยีการติดตั้งก่อนหน้านี้ซึ่งได้รับการรักษาถอนการติดตั้งและทำงานเงียบส่งเดช - บางทีคุณสมบัติที่สำคัญที่สุดสำหรับการใช้งานขององค์กรพร้อมกับความน่าเชื่อถือการจัดการแพคเกจระยะไกลผ่านทาง Active Directoryหรือทุ่มเทเครื่องมือการบริหารระยะไกลเช่น Microsoft SCCM (เดิม SMS) IBM Tivoli , CA Unicenterและที่คล้ายกัน
ใครบางคนซ้ำเวอร์ชันก่อนหน้าของคำตอบนี้ อาจจะอ่านเร็วขึ้น?
ตัวติดตั้งแบบดั้งเดิม "การปรับใช้กลิ่น"
MSI ไม่สนับสนุนการปรับใช้แบบดั้งเดิมให้มีกลิ่นเนื่องจากการออกแบบ หัวข้อเหล่านี้จะกล่าวถึงในส่วนต่อไปด้านล่าง แต่ในรายการด่วนปัญหาที่เป็นที่รู้จักมากที่สุดกับตัวติดตั้งแบบดั้งเดิมและเทคโนโลยีการปรับใช้รุ่นเก่าคือ:
- 1)บางครั้งพวกเขาลดระดับและเขียนทับไฟล์ที่ใช้ร่วมกันและรุ่นที่มีความกังวลเล็กน้อยสำหรับdll-Hellที่เกิด
- 2)มักจะมีชุดคำสั่งถอนการติดตั้งที่ไม่ถูกต้องที่มาพร้อมกับตัวติดตั้งหรือไม่ทำงานอย่างถูกต้องและเชื่อถือได้ นี่เป็นปัญหาใหญ่สำหรับการจัดการ SOE ขององค์กร
- 3) การติดตั้งแบบเงียบนั้นไม่ค่อยรองรับอย่างถูกต้อง ความน่าเชื่อถือไม่ดีและมักจะต้องบันทึกการติดตั้งด้วยการเลือกกล่องโต้ตอบและสิ่งนี้ก็ไม่ได้ดีกับเงื่อนไขที่ไม่คาดคิดเช่นกล่องโต้ตอบข้อผิดพลาดหรือกล่องโต้ตอบคำเตือนที่ไม่ได้บันทึกในการทำงานเดิม
- 4)ตัวติดตั้งไม่ได้บันทึกสิ่งที่ติดตั้งและดังนั้นจึงไม่มีวิธีอัตโนมัติในการตรวจสอบไฟล์บนดิสก์เพื่อตรวจสอบว่ายังคงเป็นรุ่นที่ติดตั้งโดยผู้ติดตั้งเดิม
- 5)พวกเขาแนะนำพารามิเตอร์บรรทัดคำสั่งที่ไม่แน่นอนไม่น่าเชื่อถือและไม่ได้มาตรฐานสำหรับการปฏิบัติการติดตั้ง
- 6) การติดตามจากบรรทัดคำสั่งที่ไม่ได้มาตรฐานและการขาดมาตรฐานเป็นการยากที่จะกำหนดตัวติดตั้งเองด้วยค่าเฉพาะที่จำเป็นสำหรับการปรับใช้องค์กรในลักษณะที่เชื่อถือได้และคาดการณ์ได้
- 7)ผู้ใช้ทั่วไปไม่สามารถเรียกใช้การติดตั้งเหล่านี้และมักจะต้องยุ่งกับสิทธิ์ผู้ดูแลระบบชั่วคราว (ใช้ "เรียกใช้" ถ้ามันเพียงพอหรือเข้าสู่ระบบในฐานะผู้ดูแลระบบติดตั้งแล้วออกจากระบบ - การสร้างล็อกอินแบบเต็ม บางครั้งก็จำเป็นสำหรับการติดตั้งให้เสร็จสมบูรณ์)
- 8) setup.exeติดตั้งมักจะไม่กลับรหัสข้อผิดพลาดที่เหมาะสมหรือรหัสความสำเร็จและบางครั้งก็จะออกทันทีและโทษของการดำเนินการอื่นที่จะเสร็จสิ้นการติดตั้งทำให้ยากที่จะตรวจสอบว่าการติดตั้งเสร็จสมบูรณ์ - โดยเฉพาะอย่างยิ่งผ่านทางชุด ไฟล์
- 9)ไฟล์ setup.exe ส่วนใหญ่อนุญาตให้แตกไฟล์ได้ แต่ไม่ใช่ในรูปแบบที่เชื่อถือได้และคาดเดาได้ - โดยทั่วไปคุณจะต้องใช้เวลามากในการค้นหาสวิตช์ที่ถูกต้องเพื่อให้ทำงานได้
- 10) การบันทึกมักไม่ดีและค่อนข้างลำบากในบางเครื่องมือ การดีบักด้วยไฟล์บันทึกไม่ค่อยสร้างความคมชัด แต่ก็ช่วยได้บ้าง
- 11)มีความโปร่งใสไม่มีในสิ่งที่ตัวติดตั้งทำและไม่มีการย้อนกลับหรือไม่น่าเชื่อถือในการยกเลิกการเปลี่ยนแปลงหลังจากที่มีการติดตั้งล้มเหลว
- 12)มีไม่มีวิธีมาตรฐานอุตสาหกรรมของการปรับใช้รันไทม์คอมโพเนนต์ที่ใช้ร่วมกันไม่ว่าจะมีการดำเนินงานส่วนประกอบของระบบ, ส่วนประกอบของบุคคลที่สามหรือของคุณเอง
รายการไปด้วยความอุดมสมบูรณ์ของอื่น ๆ ที่สำคัญและได้รับการยอมรับข้อบกพร่องของการใช้งาน เห็นได้ชัดว่าในโลกของการปรับใช้องค์กรที่ปัญหาเหล่านี้เกิดขึ้นบ่อยที่สุดและส่งผลให้ธุรกิจของ " application repackaging " ซึ่งตัวติดตั้งแบบดั้งเดิมถูกจับด้วยดิสก์และเทคโนโลยีการสแกนรีจิสทรีเพื่อสร้างไฟล์ MSI ที่สอดคล้องกับมาตรฐาน สำหรับการปรับใช้ที่เชื่อถือได้
การแบ่งบรรจุแอปพลิเคชันเป็นงานที่มีความเชี่ยวชาญและโดยทั่วไปแล้วจะส่งผลให้ไฟล์ MSI คุณภาพยอดเยี่ยมหากทำโดยผู้มีความรู้ แต่ไม่สามารถทำการบรรจุใหม่แอปพลิเคชันทั้งหมดได้เนื่องจากตรรกะการลงทะเบียนที่ซับซ้อน
ประโยชน์ของ MSI - ข้อมูลสรุปโดยย่อ
ในภาษาธรรมดาประโยชน์ที่สำคัญของ MSI คือ (ไม่เรียงตามลำดับ):
- 1) การถอนการติดตั้งจะมีให้สำหรับทุกแพ็คเกจยกเว้นว่ามันจะถูกปิดการใช้งาน
- 2)สิ่งนี้เหมือนกันสำหรับการบันทึกซึ่งยอดเยี่ยมและเป็นมาตรฐานแม้ว่า verbose (เครื่องมือเช่น WiLogUtl.exe สามารถใช้ในการวิเคราะห์ไฟล์บันทึก)
- 3)สิ่งที่ไฟล์ MSI ทำคือ (กึ่ง) โปร่งใสหรือ "ตรวจสอบได้" ส่วนใหญ่ ข้อยกเว้นคือการกระทำที่กำหนดเอง - (ดูหัวข้อความโปร่งใสด้านล่าง)
- 4)การปรับแต่งการตั้งค่าทำได้ในลักษณะที่เป็นมาตรฐาน ( แปลง )
- 5)ไม่จำเป็นต้องยุ่งกับสิทธิ์ผู้ดูแลระบบชั่วคราวเนื่องจากการติดตั้งรันด้วยการยกระดับโฆษณาผ่าน Active Directory นโยบายกลุ่มหรือการดูแลระยะไกล คุณสมบัติบางประการที่นี่ ดูที่ภาพหน้าจอนี้จากตัวแก้ไขวัตถุนโยบายกลุ่ม
- 6) การติดตั้ง / ถอนการติดตั้งแบบเงียบผ่านเครื่องมือการจัดการหรือการใช้ msiexec.exe ทำงานได้ดี
- 7)มีการสนับสนุนการย้อนกลับแบบเต็มสำหรับการติดตั้งที่ล้มเหลว หากคุณติดตั้งด้วยตนเองในกล่องมีคุณสมบัติบางอย่างที่คุณต้องรู้
- 8)ไฟล์ MSI ให้ยืมทั้งการตรวจสอบและการตรวจสอบเพื่อความสอดคล้องและความถูกต้องทางตรรกะเนื่องจากสอดคล้องกับสคีมาฐานข้อมูล ( ดูตัวอย่างการตรวจสอบ )
- 9)การอัปเดตเป็นประเภทมาตรฐานแม้ว่าจะซับซ้อนและมักจะเกิดข้อผิดพลาดได้ง่ายสำหรับผู้ทำแพ็กเกจที่ไม่มีประสบการณ์
- 10)การแยกไฟล์จาก msi เป็นคุณสมบัติในตัว (ตรวจสอบบทความที่เชื่อมโยงเพื่อดูภาพรวมอย่างรวดเร็ว)
- 11)บรรทัดคำสั่งของ Windows Installer, msiexec.exeมีการควบคุมที่ละเอียดยิ่งขึ้นของวิธีการติดตั้งลำดับที่ควรดำเนินการและตัวเลือกทั้งหมดจะทำงานกับไฟล์ MSI ที่สอดคล้องกับมาตรฐานทั้งหมด (ตั้งค่าระดับล็อกรัน / โต้ตอบ / กึ่งเงียบ ๆ กำหนดพารามิเตอร์การติดตั้งใช้การแปลง ฯลฯ ... )
- 12) โมดูลผสานเป็นกลไกของ MSI ในการส่งไฟล์ที่ใช้ร่วมกันด้วยแพ็คเกจ MSI หลายชุด มันเป็นโมดูลที่สิ้นเปลืองหรือมัดของการติดตั้งตรรกะที่ผสานกับแพ็คเกจ MSI ใด ๆ ในเวลารวบรวม Wix ได้ขยายและปรับปรุงแนวคิดนี้ด้วยการใช้ Wix รวมไฟล์ - แนวคิดที่ฉันคิดว่าดีกว่าผสานโมดูล - โดยเฉพาะสำหรับไฟล์ของคุณเอง (เช่นไม่ใช่ไฟล์ OS)
- 13)โปรแกรมติดตั้ง windows นั้นมีกลไกในการป้องกันการเขียนทับไฟล์ที่ติดตั้งหรือแก้ไข นี้จะถูกควบคุมโดยค่อนข้างตรรกะไฟล์ทดแทนที่ซับซ้อน แม้ว่าจะมีประสิทธิภาพและดี แต่ตรรกะก็อาจกลายเป็นปัญหาในตัวของมันเองได้เนื่องจากนักพัฒนาซอฟต์แวร์จำนวนมากประสบปัญหาที่ไม่สามารถเขียนทับไฟล์ปรับแต่งของพวกเขาเมื่อทำการอัพเกรด วิธีการแก้ปัญหาเหล่านี้มีการเปลี่ยนแปลงเล็กน้อยโดยทั่วไปในการออกแบบโปรแกรมที่จะหลีกเลี่ยงการใช้งานร่วมกันต่อต้านรูปแบบ- - แต่นั่นคือการอภิปรายใหญ่ของตัวเอง
ในโลกแห่งความจริงที่ฉันได้พบแง่มุมที่ไม่ประสบความสำเร็จที่จะรวมถึงปะ (ที่ซับซ้อนมาก), MSI-GUI (คุณลักษณะธรรมดาที่ค่อนข้างซับซ้อนขาดความยืดหยุ่น) ความยืดหยุ่น (อาจทำให้ยากที่จะแก้ปัญหาการทำซ้ำปัญหาซ่อมแซมตัวเอง ) และความซับซ้อนโดยรวมการจัดการกับเทคโนโลยีสำหรับผู้เริ่มต้น (ความซับซ้อนสูงของการดำเนินงานขั้นพื้นฐานในบางครั้ง - เช่นการอัพเกรด, GUI และรายละเอียดการโต้ตอบจำนวนมากทำให้เกิดผลลัพธ์ที่ไม่คาดคิด ฯลฯ ... ) ความเร็วของกระบวนการติดตั้งก็ช้าลงอย่างมากเช่นกันเนื่องจากค่าใช้จ่ายที่เพิ่มขึ้นของ MSI ดูเคล็ดลับบางอย่างสำหรับการปรับปรุงความเร็วในการติดตั้ง MSI
ข้อความที่เหลือเกี่ยวข้องกับแง่มุมต่างๆของ MSI ในรายละเอียดเพิ่มเติม
ความโปร่งใส (รูปแบบตัวติดตั้งแบบเปิด)
ไฟล์ MSI นั้นเป็นฐานข้อมูล SQL-Server ที่ถูกแยกส่วนที่เก็บไว้เป็นไฟล์หน่วยเก็บข้อมูลโครงสร้าง COM โดยหลักแล้วคือระบบไฟล์ในไฟล์หรือคอลเลกชันของสตรีมข้อมูล นี่คือประเภทไฟล์ที่ใช้ในเอกสาร Microsoft Officeและให้รูปแบบมาตรฐานที่สามารถตรวจสอบและตรวจสอบได้ - เป็นปัญหาใหญ่สำหรับองค์กรขนาดใหญ่
ด้วยข้อยกเว้นของการกระทำที่กำหนดเองรวบรวมไฟล์ MSI เป็นกล่องสีขาว ถ้าการตั้งค่าการเปลี่ยนแปลงบางสิ่งบางอย่างบ้าเช่นตั้งค่าเครือข่ายทั้งระบบคุณสามารถมองเห็นได้โดยใช้เครื่องมือที่เหมาะสม ที่โดดเด่นยกเว้นจะรวบรวมการกระทำที่กำหนดเอง - ซึ่งเป็นกล่องสีดำ ข้อกำหนดโลโก้ Windowsจำเป็นต้องมีคำอธิบายประกอบที่กำหนดเองเพื่ออธิบายสิ่งที่พวกเขากำลังทำอยู่ หวังว่าการมาถึงของ Wix จะปรับปรุงสิ่งนี้
ในการพิจารณาว่าการกระทำแบบกำหนดเองที่คอมไพล์แล้วทำในแง่เทคนิคจำเป็นต้องมีการจับภาพการตั้งค่า สิ่งนี้ไม่เคยเกิดขึ้นในประสบการณ์ของฉัน เป็นเรื่องปกติที่จะติดต่อผู้จำหน่ายเพื่อขอข้อมูลหากซอฟต์แวร์ต้องการการอนุมัติสำหรับการปรับใช้องค์กรและจากนั้นอาจเป็นแอปพลิเคชันที่ป้องกันการใช้งานไม่ใช่เฉพาะการตั้งค่า
Customizability (แปลง)
MSI สามารถปรับแต่งได้ผ่านการแปลงให้เหมาะกับความต้องการและมาตรฐานขององค์กรในขณะที่ยังช่วยให้สามารถใช้งานร่วมกันได้กับการอัพเดตตัวติดตั้งของผู้ขาย คุณไม่เปลี่ยนแปลงตัวติดตั้งเองคุณสร้างการกำหนดเองของคุณในไฟล์แยกเฉพาะองค์กรที่เรียกว่าการแปลง (ไฟล์. mst) (ส่วนแฟรกเมนต์ฐานข้อมูลหรือเปลี่ยนธุรกรรมหากคุณต้องการ) คุณมีอิสระที่จะปิดการใช้งานการกระทำที่กำหนดเองและโดยทั่วไปการเปลี่ยนแปลงแทนที่หรือปิดการใช้งานสิ่งใดก็ตามในโปรแกรมติดตั้งและคุณสามารถเพิ่มสิ่งใหม่ ๆ รวมถึงไฟล์ ไฟล์แปลงบางครั้งก็ใช้ในการแปลไฟล์ MSI เป็นภาษาอื่น การแปลงหลายตัวสามารถนำไปใช้กับ MSI เดียวนี่คือตัวอย่างที่มีเส้นทางที่ถูกตัดทอน :
msiexec.exe /I "My.msi" /QN /L*V "C:\My.log" TRANSFORMS="C:\1031.mst;C:\My.mst"
คำอธิบายพารามิเตอร์ด่วน
/QN = run completely silently
/L*V "C:\My.log"= verbose logging
TRANSFORMS="C:\1031.mst;C:\My.mst" = Apply transforms 1031.mst and My.mst.
การจัดการและการรายงาน
Windows Installer จะเก็บฐานข้อมูลที่ครอบคลุมของทุกรายการที่ผลิตภัณฑ์ได้ติดตั้งไว้ในรีจิสตรี ( HKEY_CLASSES_ROOT \ Installer - ไม่ต้องเปลี่ยนแปลงสิ่งใด ๆ ในที่นี้โดยตรง!
คุณสามารถกำหนดได้อย่างน่าเชื่อถือว่ามีการติดตั้งผลิตภัณฑ์คุณลักษณะใดที่ติดตั้งอยู่และรุ่นของไฟล์ที่ติดตั้ง นอกจากนี้คุณสามารถรับรายการของแพตช์ใด ๆ ที่ใช้กับผลิตภัณฑ์พื้นฐานได้ถ้ามี คุณสามารถเข้าถึงฐานข้อมูลนี้ผ่านทาง API ของ Win32, COM หรือ. NET ที่รองรับ APIโดยใช้สคริปต์การกำหนดค่าและเครื่องมือการดูแลระบบเช่นMicrosoft SCCM , IBM Tivoli , CA Unicenterฯลฯ ...
ความปลอดภัย (สิทธิ์ยกระดับชั่วคราว)
MSI ยังรวมถึง"สิทธิยกระดับ"ซึ่งอนุญาตให้ผู้ใช้ที่ถูก จำกัด สามารถเรียกใช้การติดตั้งผลิตภัณฑ์ที่ต้องการสิทธิ์ผู้ดูแลระบบในการติดตั้ง นี่เป็นส่วนหนึ่งของ " คุณสมบัติการโฆษณา " ซึ่งช่วยให้ผู้ดูแลระบบสามารถทำให้ผู้ใช้สามารถติดตั้งได้โดยไม่ต้องทำการติดตั้งบนเวิร์คสเตชั่นทั้งหมด ตัวติดตั้งต้องได้รับการเขียนอย่างถูกต้องในบัญชีหลักหลายบัญชีเพื่อให้แนวคิดสิทธิ์ที่ยกระดับนี้ทำงานได้อย่างถูกต้อง ผู้ใช้อาจเรียกใช้การติดตั้งผลิตภัณฑ์ด้วยตนเองหรือการติดตั้งอาจถูกควบคุมโดยระบบปรับใช้เฉพาะเช่น SCCM, Tivoli, Unicenter (โดยปกติ บริษัท ขนาดใหญ่) ไม่จำเป็นต้องยุ่งกับสิทธิ์ผู้ดูแลระบบชั่วคราวเพื่อให้สิ่งต่างๆทำงานได้ ซึ่งมักจะเป็นกรณีที่มีการติดตั้งแบบดั้งเดิม
ฐานข้อมูลการติดตั้งที่ครอบคลุมยังช่วยให้แน่ใจว่าคุณมีภาพรวมทั้งหมดของแพตช์ที่ติดตั้งและดังนั้นจึงมีความเป็นไปได้ที่จะตรวจพบช่องโหว่ด้านความปลอดภัยผ่านระบบอัตโนมัติ
การตรวจสอบ
สามารถตรวจสอบไฟล์ MSI ด้วยกฎการตรวจสอบเพื่อให้แน่ใจว่าเป็นไปตามกฎความสอดคล้องภายในจำนวนหนึ่ง(เรียกว่าICE) บริษัท สามารถสร้างการตรวจสอบ ICE ของตัวเองเพื่อบังคับใช้กฎและข้อกำหนดพิเศษขององค์กร สิ่งนี้ช่วยได้อย่างมากกับ QA เหตุผลการตรวจสอบเป็นไปได้เนื่องจากลักษณะการอ้างอิงตนเองของฐานข้อมูลเชิงสัมพันธ์และสคีมาฐานข้อมูลที่เกี่ยวข้อง ฐานข้อมูลจะต้องสอดคล้องกันภายในและสอดคล้องกับ schema ของตัวเองเกี่ยวกับกุญแจต่างประเทศประเภทข้อมูลความกว้างของเขตข้อมูลรุ่น schema ฯลฯ ... การตรวจสอบยังไปไกลกว่านี้และมีความสามารถในการตรวจสอบข้อบกพร่องตรรกะและข้อผิดพลาดของแท้ในแพคเกจ ไม่ใช่เพียงแค่การจัดรูปแบบและพิมพ์ข้อบกพร่อง ตัวอย่างเช่นสามารถตรวจจับไฟล์หรือชนิดไฟล์ที่กำลังปรับใช้กับปลายทางเป้าหมายที่ผิดพลาด
ความยืดหยุ่น (ซ่อมแซมตัวเอง)
ผู้ดูแลระบบติดตั้งคุณลักษณะของการติดตั้ง Windows ให้เป็นวิธีมาตรฐานในการดึงไฟล์ที่มาจาก MSI ( นี่คือบางส่วนข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้ ) ไฟล์ต้นฉบับเหล่านี้สามารถแชร์ได้และพร้อมใช้งานสำหรับเวิร์กสเตชันทั้งหมดสำหรับการติดตั้ง สิ่งนี้ช่วยให้มั่นใจได้ว่าจะทำการซ่อมแซมถอนการติดตั้งและปรับเปลี่ยนการดำเนินการให้เสร็จสิ้นโดยไม่ต้องร้องขอสื่อการติดตั้งบนแผ่นซีดีหรือที่คล้ายกัน สิ่งนี้มีความสำคัญอย่างยิ่งสำหรับการดำเนินการแพตช์และอัปเดตซึ่งอาจต้องมีการเข้าถึงไฟล์ต้นฉบับเวอร์ชันเก่าในสถานการณ์พิเศษ
นอกจากนี้ยังมีปัญหาทั่วไปเกี่ยวกับคุณสมบัติความยืดหยุ่นนี้ ผู้ดูแลระบบส่วนใหญ่มีประสบการณ์กับเครื่องที่มีวงจรการซ่อมแซมตัวเองเป็นวัฏจักรซึ่งไม่เคยหยุดนิ่ง ไปที่ลิงก์เพื่อดูสาเหตุของปัญหานี้ และนี่เป็นเวอร์ชันที่สั้นกว่าซึ่งอาจอ่านง่ายกว่า
ย้อนกลับ
การติดตั้งไฟล์ MSI ปกติจะเรียกการสร้างที่จุดคืนค่า นอกจากนี้ไฟล์และรายการรีจิสตรีทั้งหมดที่ถูกแทนที่หรือเขียนทับในระหว่างการติดตั้งจะถูกบันทึกและกู้คืนหากการติดตั้งล้มเหลวในการดำเนินการ
การกระทำที่กำหนดเองจะต้องใช้การสนับสนุนการย้อนกลับของตัวเองเพื่อให้สอดคล้องกับโลโก้ Windows สิ่งนี้มักจะถูกละเว้น แต่เกี่ยวข้องกับการสร้างการกระทำที่กำหนดเองที่สองเพื่อยกเลิกการเปลี่ยนแปลงที่ทำโดยการกระทำที่กำหนดเองหลัก
การย้อนกลับทำให้แน่ใจว่าเวิร์กสเตชันนั้นอยู่ในสถานะเสถียรแม้ว่าการติดตั้งจะล้มเหลว สคริปต์ย้อนกลับที่เกิดขึ้นจริงถูกเก็บไว้ในโฟลเดอร์ที่ซ่อนไว้โดยตรงบนไดรฟ์ระบบ - โดยทั่วไปC: \ Config.MSIและจะมีไฟล์ที่มีส่วนขยายและ .RBS .RBF - ย้อนกลับแฟ้มสคริปต์ เนื่องจากคุณอาจคาดหวังว่าไฟล์ MSI ที่ออกแบบมาไม่ดีสามารถละเมิดคุณสมบัติในตัวของ Windows ได้ที่นี่โปรดดูโพสต์อื่น ๆ ของฉันในกระทู้นี้สำหรับรายละเอียดเพิ่มเติม
มีวิธีปิดใช้งานการย้อนกลับและเพิ่มความเร็วในการติดตั้ง ไม่แนะนำให้ใช้โดยทั่วไป แต่ที่นี่มีรายละเอียดเกี่ยวกับทรัพย์สินและ MSIFASTINSTALL DisableRollback นี้เป็นคุณลักษณะที่ซับซ้อน แต่นี่เป็นภาพรวมย้อนกลับอย่างรวดเร็ว
การปรับปรุงและอัพเดท
แม้ว่าจะมีความซับซ้อนสูงการติดตั้งแพตช์ใน Windows ได้รับการจัดการและลงทะเบียนอย่างสมบูรณ์บนระบบเพื่อให้สถานะความปลอดภัยของระบบสามารถกำหนดได้โดยการตรวจสอบสิ่งที่ได้รับการติดตั้ง การอัปเดตนั้นได้รับการสร้างมาตรฐานให้กับตัวแปรพื้นฐานสองสามตัวและการทำเช่นนี้จะช่วยให้การอัปเดตสามารถดำเนินการได้ด้วยความมั่นใจในระดับที่สูงขึ้นหากคุณสามารถจัดการกับความซับซ้อนที่เกี่ยวข้องได้ ระบบการปรับใช้จะสามารถรายงานว่าการปรับปรุงล้มเหลวและสาเหตุใด
ในมุมมองแบบอัตนัยทำงานได้ดีสำหรับการใช้งานพื้นฐาน 2 อย่าง : 1 ) โปรแกรมแก้ไขด่วนขนาดเล็กสำหรับผลิตภัณฑ์ที่จัดส่งและ2 ) การติดตั้งผลิตภัณฑ์ที่ติดตั้งเพื่อแก้ไขลำดับการถอนการติดตั้งที่ผิดพลาดซึ่งป้องกันไม่ให้ผลิตภัณฑ์
แพทช์เป็นเพียงกลไกการส่งมอบการปรับปรุงที่ทำงานอยู่แล้ว ดังนั้นมันจึงเป็นเพียงคอนเทนเนอร์ที่ซับซ้อนและมีข้อผิดพลาดได้ง่ายกว่าการตั้งค่าดั้งเดิมเอง กฎข้อที่หนึ่งสำหรับแพตช์คือมันต้องเล็กกว่า MSI ดั้งเดิมหรือไม่มีเหตุผลที่ชัดเจนในการส่งแพตช์เลย โปรแกรมแก้ไขอาจมีขนาดใหญ่ขึ้นอย่างรวดเร็วหากตั้งเป้าหมายผลิตภัณฑ์หลายรุ่น
เข้าสู่ระบบ (verbose แน่นอน)
Windows Installer มีคุณสมบัติการบันทึกที่ได้มาตรฐานซึ่งยอดเยี่ยมกว่าแปลงก่อน ๆ ไฟล์บันทึกสามารถถอดรหัสได้โดยใช้ตัววิเคราะห์บันทึกและสามารถใช้ระดับบันทึกที่กำหนดเองเพื่อกำจัดการสร้างไฟล์บันทึกที่มีขนาดใหญ่เกินไปพร้อมข้อมูลที่ไม่จำเป็น สำหรับวัตถุประสงค์ในการดีบั๊กการบันทึกอย่างละเอียดมีประโยชน์อย่างยิ่ง ดูบล็อกของ Rob Menschingสำหรับวิธีที่ดีในการอ่านไฟล์บันทึกของ MSI (โดยพื้นฐานแล้วคุณค้นหา " value 3 " ในไฟล์บันทึก) นี่คือตัวอย่างบรรทัดคำสั่งที่ดำเนินการบันทึก verbose:
msiexec.exe /I "C:\Installer.msi" /QN /L*V "C:\msilog.log"
บทความนี้มาจากโรเบิร์ต Macdonaldจากการติดตั้งทีมงานของ Windowsขอแนะนำเป็นลักษณะการปฏิบัติในการเข้าสู่ระบบของ MSI: วิธีการตีความ Windows Installer บันทึก
ข้อสรุป
ทุกอย่างไม่ได้เป็นสิ่งที่ดีเกี่ยวกับ Windows Installer ความซับซ้อนของมันอาจทำให้ยุ่งเหยิงในบางครั้ง แต่สำหรับองค์กรขนาดใหญ่ไฟล์ MSI นั้นเหนือกว่าการปรับใช้รูปแบบอื่น ๆ อย่างมากมายเมื่อคุณคำนึงถึงรายการผลประโยชน์ข้างต้น
กระบวนทัศน์การติดตั้งใหม่ (คำสั่ง SQL ขนาดใหญ่)
เพื่อให้เข้าใจถึง " กระบวนทัศน์ " ใหม่เป็นสิ่งสำคัญที่จะต้องเข้าใจว่า MSI มีจุดประสงค์เพื่ออธิบายถึงสิ่งที่กำลังจะเกิดขึ้นในระบบเป้าหมายไม่ใช่ลำดับเหตุการณ์ที่แน่นอน ฉันคิดว่าคุณสามารถคิดว่ามันเป็นคำสั่ง SQL ตัวอย่างเช่นคุณประกาศรายการที่คุณต้องการเพิ่มหรือแก้ไขเป็นไฟล์ INI เนื่องจากการติดตั้งรันการเปลี่ยนแปลงถูกติดตามและการย้อนกลับมีอยู่เพื่อให้สามารถเปลี่ยนกลับได้หากการติดตั้งล้มเหลว มันใช้งานได้ดีเช่น " อัตโนมัติ " และเชื่อถือได้เมื่อทำถูกต้อง
การกระทำที่กำหนดเอง (ผู้ต้องสงสัยปกติ)
มันเป็นเรื่องที่ปวดหัวอย่างมากสำหรับนักพัฒนา MSI ที่มีประสบการณ์ที่จะเห็นคนพึ่งพาการดำเนินการที่กำหนดเองที่ซับซ้อนและไม่น่าเชื่อถือสำหรับฟังก์ชั่นการใช้งานที่ดีขึ้นด้วยคุณสมบัติของ MSI ส่วนแบ่งที่สำคัญของข้อผิดพลาดของ MSI และปัญหาการย้อนกลับเกิดจากการกระทำที่กำหนดเองที่ผิดพลาดและข้อผิดพลาดอื่น ๆ ส่วนใหญ่เกิดจากการใช้การออกแบบ MSI ที่ผิดพลาด (ดูคำตอบแยกต่างหากสำหรับรายการข้อผิดพลาดทั่วไปของ MSI)
นอกเหนือจากคุณสมบัติในตัวของ MSI แล้วยังมีฟังก์ชั่นที่กำหนดเองเพิ่มมากขึ้นผ่านเฟรมเวิร์กใหม่เช่นWixซึ่งเป็นวิธี XML ในการรวบรวมไฟล์ MSI ดังนั้นจึงมีความต้องการตรรกะการกระทำที่กำหนดเองที่ซับซ้อนน้อยลงสำหรับการทำงานส่วนใหญ่
MSIสนับสนุนคุณสมบัติทั้งหมดสำหรับการจัดการการรวมการตั้งค่าไฟล์ ini แบบอักษรตัวแปรสภาพแวดล้อมรีจิสตรีคีย์ข้อมูล COM ทางลัดส่วนขยายไฟล์เงื่อนไขการเรียกใช้การติดตั้ง GAC ODBC ฯลฯ
WIXไปอีกด้วยการสนับสนุนคุณสมบัติขั้นสูงเช่นส่วนขยายเซิร์ฟเวอร์ SQL, การติดตั้ง IIS และการกำหนดค่า, เคาน์เตอร์วัดประสิทธิภาพ, การตรวจสอบ DirectX และงานอื่น ๆ ที่เกี่ยวข้องกับเกม, การสร้างอิมเมจเนทีฟ. NET, COM +, ไดรเวอร์, กฎไฟร์วอลล์ การจัดการผู้ใช้กลุ่มหุ้นและอื่น ๆ อีกมากมาย ค่อนข้างเกี่ยวข้องกับการจัดการ แต่มีความน่าเชื่อถือมากกว่าการกระทำที่คุณกำหนดเอง
หลีกเลี่ยงการกระทำที่กำหนดเองหากเป็นไปได้
เพื่อพยายามที่จะใส่ไว้ในมุมมองเหล่านี้ในตัวและโซลูชั่นสำเร็จรูปจะทำโดยผู้เชี่ยวชาญด้านการใช้งานที่ดีที่สุดและพวกเขาจะได้รับการทดสอบโดยนับพันนับหมื่นหรืออาจถึงล้านของผู้ใช้ (สำหรับในตัวสิ่งที่อยู่ใน MSI ตัวเอง) คุณคิดว่าคุณสามารถทำได้ดีกว่าการทำเองของคุณเอง? การใช้การกระทำที่กำหนดเองควรจะเป็นเหตุการณ์ที่หายากและมันควรจะเป็นอย่างที่จำเป็นเพื่อให้บรรลุสิ่งที่ไม่ซ้ำกันสำหรับผลิตภัณฑ์ที่คุณติดตั้ง และคุณต้องเขียนการสนับสนุนการย้อนกลับที่เหมาะสมเช่นกันซึ่งค่อนข้างเกี่ยวข้อง
การเขียนแอ็คชั่นที่กำหนดเองนั้นเป็นความผิดพลาดเกือบทุกครั้งแต่ก็มีหลายกรณีเมื่อคุณต้องการความยืดหยุ่นเช่นกัน เช่นเคยมันเป็นสิ่งสำคัญที่จะเลือกการต่อสู้ของคุณให้ดี มันอาจเป็นงานที่สนุกในตอนแรก แต่คุณอาจต้องเผชิญกับปัญหาที่ไม่คาดคิดมากมายและเสียเวลามาก ฉันหมายถึงสิ่งนี้อย่างจริงจังมาก ฉันได้เขียนชุดของการกระทำแบบกำหนดเอง C ++ สำหรับองค์กรใช้เอง (เพื่อกำจัดข้อผิดพลาดการกระทำแบบกำหนดเอง VBScript) - มันไม่เดินในสวนสาธารณะและแม้ว่าการเข้ารหัสอาจไม่ยากที่สุดในโลกการดีบักและการทดสอบและ การเชื่อมต่อกับไฟล์ MSI ที่แท้จริงนั้นไม่มีส่วนเกี่ยวข้องใด ๆ เลย บางครั้งการค้นคว้าตัวเลือกสำเร็จรูปที่พร้อมใช้งานมีแนวโน้มที่จะช่วยให้คุณประหยัดเวลาในการพัฒนาและให้ความน่าเชื่อถือในการปรับใช้ที่มากขึ้น
ใช้ลำดับการเรียกใช้แอปพลิเคชัน
จุดที่สำคัญมากคือว่าจำนวนมากของการตั้งค่าโปรแกรมควรจะเกิดขึ้นในการเปิดตัวแอพลิเคชันเมื่อคุณมีบริบทรันไทม์คาดการณ์และจัดการข้อผิดพลาดที่ดีพร้อมใช้งานและไม่ได้อยู่ในการติดตั้งซึ่งเป็นเพียงเรียกใช้ครั้งเดียวและมีความซับซ้อนมากเลียนแบบ , ลำดับ , เครื่องและรันไทม์ ความซับซ้อน
การตั้งค่าของคุณไม่ควรกำหนดค่าสมัครก็ควรเตรียมความพร้อมการประยุกต์ใช้สำหรับการตั้งค่าในการเปิดตัวครั้งแรก การตั้งค่าของคุณโดยเฉพาะควรเขียนการตั้งค่าทั้งหมดที่ต้องการสิทธิ์ในระดับสูง - เขียนถึง HKLM ลงทะเบียนบริการติดตั้งไปยังเส้นทางต่อเครื่องและสิ่งต่าง ๆ ที่แอปพลิเคชันไม่สามารถเขียนด้วยสิทธิ์ผู้ใช้ปกติ
หากคุณเป็นนักพัฒนาติดตั้งที่คุณควรมีส่วนร่วมที่จะได้รับการเข้ารหัสลำดับการเปิดตัวแอพลิเคชันแทนการเขียนการกระทำที่กำหนดเองการตั้งค่า หากไม่มีอะไรอื่นเพื่อหลีกเลี่ยงการมองเช่นคุณกำลังพยายามที่จะ "ผ่านเจ้าชู้" กับคนอื่น ในลำดับการเปิดตัวนี้คุณสามารถเขียนรหัสที่เชื่อถือได้และสามารถทดสอบได้มากขึ้นซึ่งง่ายต่อการขอความช่วยเหลือจากเจ้าหน้าที่ QA ในการทดสอบ (บ่อยครั้งที่พวกเขาไม่เข้าใจการทดสอบการปรับใช้รวมถึงการทดสอบแอปพลิเคชัน)
ความซับซ้อนในการตั้งค่า
หลักของความซับซ้อนของการติดตั้งศูนย์รอบความจริงที่ว่ามีข้อผิดพลาดสะสม (คุณจะจัดการขั้นตอนการจัดส่งไม่ได้เป็นเพียง recompile อย่างรวดเร็ว) ข้อผิดพลาดเป็นสิ่งที่ยากมากที่จะแก้ปัญหา (การเข้าถึงระบบที่ข้อผิดพลาดที่เกิดขึ้นไม่ได้) และระบบเป้าหมาย รัฐแตกต่างกันในทุก ๆ ทางเท่าที่จะเป็นไปได้ โปรดดูคำตอบนี้สำหรับการสนทนาอย่างละเอียดมากขึ้นเกี่ยวกับความซับซ้อนนี้และวิธีที่ระบบเป้าหมายอาจต้องระวังในหลายวิธี: Windows Installer และการสร้าง WiX และ The Complexity of Deployment (ดูที่ด้านล่าง)
WiX (โซลูชัน MSI ที่ดีที่สุดสำหรับวัตถุประสงค์บางอย่าง)
อ่านคำแนะนำด่วนของ WiXนี้สำหรับคำอธิบายเกี่ยวกับวิธีใหม่ในการรวบรวมไฟล์ MSI ไฟล์ต้นฉบับแบบข้อความให้การควบคุมแหล่งที่ดีกว่ามากก่อนหน้านี้ นี้เป็นฟรีชุดเครื่องมือที่มาเปิดที่จะขอแนะนำ
หมายเหตุ : ดูที่อื่นในเธรดเพื่อดูบทสรุปปัญหาการออกแบบทั่วไปเกี่ยวกับไฟล์ MSI - มันไม่สมบูรณ์มาก แต่ควรคุ้มค่าที่จะอ่าน ฉันไม่ต้องการที่จะเพิ่มคำตอบนี้เพราะมันไม่เกี่ยวข้อง 100% แต่สำหรับการใช้งานในโลกแห่งความจริงมันเป็นหัวข้อที่สำคัญ
ข้อมูล MSI หลักบางส่วนสำหรับผู้ดูแลระบบ:
(ให้อภัย "การส่งเสริม" ที่ไร้ยางอาย - เพื่อความสะดวกในการเข้าถึงและเรียกคืน)
นี่เป็นเพียงไม่กี่ลิงก์ไปยังหัวข้อที่อาจเป็นประโยชน์ต่อผู้ดูแลระบบในความพยายามในการควบคุมการปรับใช้บนเครือข่าย:
หัวข้อวิธีการพิเศษ:
หัวข้อแนวคิด / แนวปฏิบัติที่ดีที่สุด: