ประโยชน์ขององค์กรในการใช้ไฟล์ MSI


57

ข้อดีของการใช้ไฟล์. msi แทนไฟล์ setup.exe ปกติคืออะไร

ฉันรู้สึกว่าการปรับใช้นั้นง่ายกว่าบนเครื่องที่ผู้ใช้มีสิทธิ์น้อย แต่ไม่แน่ใจเกี่ยวกับรายละเอียด

msiexec.exe มีคุณลักษณะใดที่ทำให้การปรับใช้ง่ายกว่าการใช้สถานการณ์ setup.exe

เคล็ดลับหรือกลอุบายใด ๆ เมื่อปรับใช้แอปพลิเคชั่น. msi

คำตอบ:


42

ประโยชน์เพียงไม่กี่:

  • สามารถโฆษณาได้ (เพื่อให้สามารถทำการติดตั้งตามต้องการได้)
  • เช่นเดียวกับการโฆษณาคุณสมบัติสามารถติดตั้งได้ทันทีที่ผู้ใช้พยายามใช้
  • การจัดการสถานะจะได้รับการดูแลดังนั้น Windows Installer จะมีวิธีให้ผู้ดูแลระบบดูว่ามีการติดตั้งแอปพลิเคชันบนเครื่องหรือไม่
  • ความสามารถในการย้อนกลับหากการติดตั้งล้มเหลว

ฉันคิดว่าเมื่อฉันปรับใช้ซอฟต์แวร์ในการตั้งค่าระดับองค์กร: การปรับใช้ซอฟต์แวร์ผ่าน MSI นั้นสนุกอย่างยิ่ง ในทางตรงกันข้ามฉันมักพบว่าตัวเองกลัวที่จะปรับใช้ซอฟต์แวร์เมื่ออยู่ในที่อื่น

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้ง MSI ให้พิมพ์msiexecลงในกล่องโต้ตอบเรียกใช้


3
+1 - ฉันไม่เห็นสิ่งนี้กลับมาในปี '09 (ฉันคิดว่าไซต์อาจยังอยู่ในช่วงเบต้ามาก่อน) แต่ฉันชอบ "... ฉันมักจะพบว่าตัวเองหวาดกลัว ... " บิต ฉันรู้สึกอย่างนั้นทั้งหมด (แม้ว่าจะยุติธรรม "MSIs" บางอย่างทำให้ฉันรู้สึกเหมือนกัน ... Java ... Google Chrome ... )
Evan Anderson

74

อัปเดต, กรกฎาคม 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 หลักบางส่วนสำหรับผู้ดูแลระบบ:

(ให้อภัย "การส่งเสริม" ที่ไร้ยางอาย - เพื่อความสะดวกในการเข้าถึงและเรียกคืน)

นี่เป็นเพียงไม่กี่ลิงก์ไปยังหัวข้อที่อาจเป็นประโยชน์ต่อผู้ดูแลระบบในความพยายามในการควบคุมการปรับใช้บนเครือข่าย:

หัวข้อวิธีการพิเศษ:

หัวข้อแนวคิด / แนวปฏิบัติที่ดีที่สุด:


24

คำตอบนี้เป็นงานที่อยู่ระหว่างดำเนินการและมีเค้าโครงคร่าวๆ ยินดีต้อนรับการเพิ่มคำถามและการปรับปรุง รายการนี้ไม่ได้หมายความว่าครบถ้วนสมบูรณ์ เพิ่มความคิดเห็นพร้อมข้อมูลเกี่ยวกับแพ็คเกจที่ลำบาก


ปัญหาทั่วไปและข้อบกพร่องในการออกแบบที่พบในแพ็คเกจของ MSI

ฉันต้องเตือนด้วยว่าไฟล์ MSI จำนวนมากมีข้อผิดพลาดบางครั้งอาจร้ายแรง แต่แพ็คเก็ตแอพพลิเคชั่นที่ผ่านการฝึกอบรมจะสามารถตรวจจับสิ่งนี้ได้และในกรณีส่วนใหญ่จะเป็นการขจัดปัญหา ฉันกำลังเพิ่มคำตอบนี้เป็นคำตอบแยกต่างหากเนื่องจากเป็นคำตอบของคำถามที่แตกต่างกัน แต่ฉันรู้สึกว่ามันมีความเกี่ยวข้องในชุดข้อความเดียวกัน

รายละเอียดทางเทคนิคที่เกี่ยวข้องใน MSI มีความซับซ้อนมาก ในระดับพื้นฐานมันเกี่ยวกับการย่อยสลายไฟล์และการตั้งค่ารีจิสตรีของคุณเป็นส่วนประกอบ (การติดตั้งแบบอะตอมมิก) และฟีเจอร์ (ส่วนที่ผู้ใช้สามารถเลือกได้เพื่อติดตั้งตัวอย่างเช่นคุณสมบัติพจนานุกรม) มีกฎการปฏิบัติที่ดีที่สุดหลายประการสำหรับการแยกส่วนประกอบและข้อผิดพลาดในไฟล์ MSI ที่นี่มีมากมาย ข้อผิดพลาดเหล่านี้ได้รับการจัดการโดยมาตรฐานในการใช้ "การอัพเกรดที่สำคัญ"

การติดตั้งที่เกิดขึ้นจริงจะดำเนินการในจำนวนของลำดับการติดตั้งบางคนที่มีสิทธิในการยกระดับ ทุกสิ่งเหล่านี้ถูกกำหนดไว้ในตารางฐานข้อมูลและนี่คือที่ MSI มีความซับซ้อนอย่างมากที่จะเข้าใจและจัดการ การแพร่กระจายไปทั่วลำดับการติดตั้งคือการกระทำมาตรฐานและแบบกำหนดเอง การกระทำมาตรฐานได้รับการออกแบบโดย Microsoft และจำเป็นต้องดำเนินการ (บางครั้งสามารถแก้ไขลำดับได้) การดำเนินการที่กำหนดเองนั้นมีให้สำหรับผู้ขายเพื่อดำเนินการตรรกะที่กำหนดเองซึ่งไม่ได้ครอบคลุมโดย MSI เอง สิ่งเหล่านี้สามารถอยู่ในสคริปต์หรือรูปแบบที่รวบรวม การกระทำที่กำหนดเองสามารถดำเนินการได้ทันที (เรียกใช้ในครั้งเดียวไม่ควรเปลี่ยนระบบ แต่มักจะทำ) หรือรอการตัดบัญชี (เขียนลงในสคริปต์ excecution ที่ดำเนินการแล้วเป็นธุรกรรมและดังนั้นจึงสนับสนุนการย้อนกลับ)

ข้อผิดพลาดทั่วไปใน MSI คือ (ตามลำดับโดยเฉพาะ - และแสดงเป็นระเบียบจริง ๆ ):

  • ข้อผิดพลาดในการสร้างองค์ประกอบ (ไม่เป็นไปตามแนวปฏิบัติที่เหมาะสม) สิ่งนี้อาจทำให้เกิดปัญหาในการแพตช์และอัปเกรดที่มีอาการลึกลับเช่นไฟล์และการตั้งค่าที่หายไปหรือแพตช์ที่ระเบิดออกมาพร้อมกับข้อผิดพลาดที่ไร้สาระ หากต้องการใช้งานเกินขนาดควรใช้หนึ่งไฟล์ต่อองค์ประกอบเว้นแต่ว่าไฟล์มีจำนวนมหาศาล
  • ปัญหาการอัพเกรดที่เกี่ยวข้องกับข้อมูลผู้ใช้ที่ถูกเขียนทับหรือรีเซ็ต ดูรายละเอียดเพิ่มเติมด้านล่าง
  • การกำหนดเวลาที่ไม่ถูกต้องของการกระทำที่กำหนดเองนอก "ส่วนที่ทำธุรกรรม" ของลำดับการติดตั้งหรือการกระทำที่กำหนดเองที่พิมพ์ผิดประเภทนั้นไม่ถูกต้อง ซึ่งมักทำให้การดำเนินการล้มเหลว (ไม่มีสิทธิ์ในการยกระดับ) เมื่อเรียกใช้จากระยะไกลผ่านระบบการปรับใช้และการย้อนกลับนั้นพิการได้อย่างมีประสิทธิภาพเพราะการกระทำที่ทำธุรกรรมเท่านั้นที่จะถูกย้อนกลับ การทำรายการติดตั้ง Windows (คิดว่าการทำธุรกรรมฐานข้อมูลกระทำ) วิ่งระหว่างการดำเนินการมาตรฐานInstallInitializeและInstallFinalizeในลำดับการติดตั้งหลักและทำงานที่มีสิทธิสูง การเปลี่ยนแปลงระบบทั้งหมดจะเกิดขึ้นในธุรกรรมนี้ - สิ่งอื่นใดที่ผิดพลาด (แต่น่าเสียดายที่ค่อนข้างบ่อย)
  • ใช้การกระทำที่กำหนดเองในโหมดทันทีเพื่อทำการเปลี่ยนแปลงระบบนอกลำดับการติดตั้งของทรานแซคชัน สิ่งนี้จะหยุดการสนับสนุนการย้อนกลับและโดยทั่วไปจะทำให้เกิดข้อผิดพลาดด้านความปลอดภัยเนื่องจากการกระทำที่กำหนดเองในโหมดทันทีไม่ได้รันด้วยสิทธิ์ผู้ใช้ที่ยกระดับไม่ว่าพวกเขาจะอยู่ที่ไหนในลำดับการติดตั้ง
  • การออกแบบที่ผิดพลาดที่ทำให้วงจรการซ่อมแซมตัวเองซ้ำเกิดขึ้นโดยไม่มีเหตุผลที่ชัดเจน นี่เป็นอีกบทความหนึ่งในหัวข้อนี้จาก installsite.org
  • การกระทำแบบกำหนดเองที่ไม่เชื่อฟังการปราบปรามของ GUI ในโหมดการติดตั้งแบบอัตโนมัติอาจแสดงกล่องโต้ตอบโมดัลที่ทำให้การปรับใช้ล้มเหลวอย่างสมบูรณ์เมื่อทำงานแบบเงียบ ๆ ปัญหานี้พร้อมกับความแตกต่างโดยรวมระหว่างโหมดเงียบและโหมดโต้ตอบมีการอธิบายรายละเอียดเพิ่มเติมที่นี่ (ค่อนข้างละเอียดและใช้เวลานาน): การถอนการติดตั้งจากแผงควบคุมจะแตกต่างจากลบออกจาก. msi
  • บางส่วนดำเนินการเองในแพคเกจประพันธ์ไม่สมควรจะถูกแทรกเฉพาะในลำดับส่วนติดต่อผู้ใช้ สิ่งนี้ทำให้ไม่สามารถรันในโหมดการติดตั้งแบบไม่มีการโต้ตอบ นี่เป็นเรื่องร้ายแรงสำหรับการปรับใช้ขององค์กรเนื่องจากการติดตั้งแบบไม่ใช้เสียงนั้นถูกใช้ที่นี่เกือบทั้งหมด ปัญหานี้อาจส่งผลกระทบต่อการถอนการติดตั้งซึ่งหมายความว่าคุณอาจต้องเรียกใช้การถอนการติดตั้งแบบโต้ตอบเพื่อถอนการติดตั้งเพื่อให้แน่ใจว่าการดำเนินการล้างข้อมูลที่กำหนดเองทั้งหมดจะทำงาน ดูลิงก์ในสัญลักษณ์แสดงหัวข้อก่อนหน้าเพื่อดูคำอธิบายเพิ่มเติมเกี่ยวกับระดับส่วนต่อประสานผู้ใช้
  • การตั้งค่าประกอบด้วยไฟล์ที่ไม่ได้ตั้งใจจะนำไปใช้ในตำแหน่งที่ติดตั้ง โดยทั่วไปไฟล์ระบบที่ควรติดตั้งแบบเคียงข้างกันในโฟลเดอร์ชุดประกอบ winsxs
  • ความเร็วในการติดตั้งช้าเป็นอีก "ปัญหา" ที่รายงานจำนวนมากที่มี MSI นี่คือเคล็ดลับบางอย่างเกี่ยวกับเรื่องนี้ คุณสมบัติ Windows Installer โดยรวมนั้นค่อนข้างจะมีค่าใช้จ่ายเล็กน้อยเนื่องจากข้อกำหนดการลงทะเบียนจำนวนมากในรีจิสทรีสำหรับสิ่งที่กำลังติดตั้งอยู่
  • เขียนทับข้อมูลที่กำหนดเองหรือไฟล์ข้อมูลที่ใช้ร่วมกัน สิ่งนี้สามารถเกิดขึ้นได้หากไฟล์ INI ถูกติดตั้งผ่านตารางไฟล์และไม่ใช่ตาราง IniFile ในกรณีหลังจะถือว่าเป็น "การทำธุรกรรมการเปลี่ยนแปลง" ในกรณีก่อนหน้ามันเป็นการดำเนินการแทนที่ไฟล์ซึ่งโดยทั่วไปจะไม่ถูกต้องเว้นแต่ไฟล์ INI ของคุณจะมีการจัดรูปแบบที่ไม่เป็นมาตรฐานหรือส่วนความคิดเห็นขนาดใหญ่ที่คุณต้องการปรับใช้กับไฟล์ เครื่องมือสำหรับนักพัฒนา).
  • กฎระเบียบที่ซับซ้อนสำหรับแฟ้มเขียนทับสามารถทำให้ไฟล์ถูกเขียนทับโดยไม่ได้ตั้งใจหรือไม่ได้ปรับปรุงที่ทั้งหมด - นี้เป็นปัญหาคลาสสิกของ MSI ตรวจสอบบทความนี้สำหรับวิธีการที่คุณสามารถบังคับให้เขียนทับไฟล์ที่จะไม่ปรับ กฎสามารถปรับแต่งได้เล็กน้อยโดยการตั้งค่าแบบกำหนดเองสำหรับคุณสมบัติ REINSTALLMODEที่ระดับ msiexec.exe ระดับบรรทัดคำสั่ง (เขียนทับเวอร์ชันเก่าเขียนทับรุ่นที่เท่ากันเขียนทับเวอร์ชันอื่น ๆ ... ) และทำงานแตกต่างกันสำหรับไฟล์ข้อมูลและไฟล์ที่มีเวอร์ชัน รายละเอียดใน SDK การทำความเข้าใจสิ่งนี้เป็นสิ่งสำคัญและเป็นการออกแบบที่มักจะขมวดคิ้วแม้ว่าจะเข้าใจแล้วก็ตาม
  • การลงทะเบียนไฟล์ COM ด้วยตนเองระหว่างการติดตั้งอาจทำให้เกิดคำเตือนความปลอดภัยหรือทำให้เกิดปัญหาได้หลายวิธี ตรวจสอบบทความนี้: ลงทะเบียนด้วยตนเองถือว่าเป็นอันตราย
  • ความแตกต่างของปัญหาการเปลี่ยนไฟล์คือกรณีที่มีการอัพเกรดครั้งใหญ่ (ซึ่งถอนการติดตั้งและติดตั้งผลิตภัณฑ์ใหม่) ถอนการติดตั้งไฟล์ที่แก้ไขแล้วและติดตั้งเวอร์ชันเริ่มต้นใหม่ ในกรณีเหล่านี้เนื้อหาจะถูกเปลี่ยนกลับหรือเขียนทับเมื่อจริงแล้วมันถูกถอนการติดตั้งก่อนแล้วจึงติดตั้งใหม่
  • บริการที่ทำงานด้วยข้อมูลประจำตัวผู้ใช้ที่กำหนดเองอาจสูญเสียข้อมูลรับรองของตนในระหว่างสถานการณ์การอัปเกรดที่สำคัญรวมถึงไฟล์การตั้งค่า (ดูเหมือน) จะเปลี่ยนกลับเป็นค่าเริ่มต้น เพียงบันทึก: ในบริการความเห็นของฉันทำงานด้วยข้อมูลประจำตัวของผู้ใช้เป็นข้อบกพร่องการออกแบบในสถานที่แรก
  • คุณสมบัติสาธารณะจะไม่ถูกส่งผ่านอย่างถูกต้องจากไคลเอ็นต์ไปยังกระบวนการเซิร์ฟเวอร์เพื่อป้องกันการกระทำที่กำหนดเองไม่ให้เสร็จสมบูรณ์ตามที่คาดไว้ สิ่งนี้เกี่ยวข้องกับการอัพเดตคุณสมบัติ SecureCustomActionProperties
  • แอปพลิเคชั่นบางอย่างไม่สามารถทำงานได้อย่างถูกต้องสำหรับผู้ใช้รายอื่นนอกเหนือจากแอพพลิเคชั่นที่ติดตั้งการตั้งค่าไว้ นี่คือข้อผิดพลาดของการออกแบบที่ร้ายแรง แต่โดยทั่วไปสามารถแก้ไขได้โดยการประยุกต์ใช้บรรจุภัณฑ์ที่มีประสบการณ์ใช้ด้วยตนเองหรือ ActiveSetupเพื่อเพิ่มHKCU รีจิสทรีคีย์และไฟล์ userprofile เรื่องนี้ค่อนข้างซับซ้อนและอาจต้องใช้ศิลปะสีดำสักหน่อยเพื่อให้ทำงานได้ สำหรับบันทึก: ในความคิดของฉันจริงคือการเปลี่ยนแอปพลิเคชันเพื่อให้สามารถเริ่มต้นการตั้งค่าต่อผู้ใช้ทั้งหมดตามการตั้งค่าเริ่มต้นและแม่แบบที่คัดลอกมาจากตำแหน่งต่อเครื่องหรือตามค่าเริ่มต้นภายในแอปพลิเคชัน รหัสแหล่งที่มา).
  • ไฟล์ MSI บางไฟล์ทำให้เกิดความปลอดภัยสำหรับไฟล์ที่ติดตั้งโดยการตั้งค่าสิทธิ์การอ่าน / เขียนแบบเต็มสำหรับผู้ที่ไม่ใช่ผู้ดูแลระบบที่นี่ทุกที่ทุกเวลา ในบางครั้งแอปพลิเคชันหยุดทำงานบน Windows รุ่นที่ใหม่กว่าเนื่องจากขาดการอนุญาต ผู้จัดทำแอพพลิเคชันต้องเผชิญกับการวิเคราะห์คำขออนุญาตที่กำหนดเองของแอปพลิเคชันบ่อยครั้ง โดยทั่วไปต้องมีการอนุญาตพิเศษบางอย่างใน HKLM หรือที่อื่นใน% ProgramFiles%
  • การติดตั้ง Installshieldบางอย่างในวันนั้นจะพยายามเชื่อมต่ออินเทอร์เน็ตระหว่างการติดตั้ง สิ่งนี้น่ากลัวสำหรับสถานการณ์การปรับใช้ขององค์กรที่การควบคุมการใช้งานแน่นหนาและผู้ติดตั้งจะไม่ได้รับอนุญาตให้ดาวน์โหลดเนื้อหาใหม่จากอินเทอร์เน็ตโดยตรง
  • ปัญหาเครือข่ายอื่นคือเมื่อการตั้งค่าพยายามแสดง GUI ซึ่งผู้คนป้อนข้อมูลที่ผ่านการตรวจสอบผ่านอินเทอร์เน็ตเมื่อติดตั้งหรือแสดงเนื้อหาสดจากเว็บไซต์ของพวกเขา โดยทั่วไปจะเป็นที่อยู่อีเมลข้อมูลติดต่อคีย์ใบอนุญาตและสิ่งต่าง ๆ การเชื่อมต่ออาจล้มเหลวได้อย่างสมบูรณ์ด้วยสาเหตุหลายประการเนื่องจากการกำหนดค่าพร็อกซีขาดหายไปในสภาพแวดล้อมขององค์กร (ไม่มีการเชื่อมต่อโดยตรงกับอินเทอร์เน็ตการรับส่งข้อมูลทางอินเทอร์เน็ตทั้งหมดจะถูกกำหนดเส้นทางผ่านแคชเซิร์ฟเวอร์ที่เฉพาะเจาะจงและแต่ละกระบวนการ . นี่คือบทความเกี่ยวกับอันตรายของการตรวจสอบใบอนุญาตผ่านการติดตั้ง
  • Installshieldใช้ในการติดตั้งรันไทม์สำหรับภาษาInstallcript นี้การตั้งค่าที่จำเป็นต้องถูกรวมโดยทั่วไปใน setup.exe และมันเป็นแหล่งที่มาของตำนานของปัญหา มีหลายรุ่นเข้ากันไม่ได้หลายอย่างและมีข้อผิดพลาดรันไทม์จำนวนหนึ่งเกิดขึ้น ตั้งแต่เวอร์ชั่น 12 (หรือราว ๆ นั้น) รันไทม์นี้ได้รับการติดตั้งอย่างน่าเชื่อถือและมันก็รวบรวมไปเป็นแซนด์บ็อกซ์แบบดั้งเดิมหรือที่รันอยู่ (ฉันไม่แน่ใจว่าจะใช้แซนด์บ็อกซ์ตัวใดตัวหนึ่งหรืออย่างอื่น การตั้งค่า Installshield รุ่นเก่าอาจแสดงปัญหาการปรับใช้นี้ มีไซต์สนับสนุนดั้งเดิมจาก Installshield สำหรับปัญหาต่าง ๆ เช่น: http://consumer.installshield.com/common.asp
  • หลายการตั้งค่าสามารถแสดงพฤติกรรมการติดตั้งที่ผิดปกติหรือข้อบกพร่องที่ไม่สม่ำเสมอเมื่อทำงานบนเครื่องการตั้งค่าสำหรับภาษาที่แตกต่างกันที่ไม่ใช่ภาษาอังกฤษหรือแม้กระทั่งเมื่อคุณเรียกใช้ภาษาท้องถิ่น (แปล) รุ่นของการตั้งค่าในเครื่องภาษาอังกฤษ นี่อาจเป็นความล้มเหลวรันไทม์อย่างหมดจดหรือกรณีเมื่อคุณสมบัติกล่องโต้ตอบที่แปลเป็นภาษาท้องถิ่นตัดข้อความหรือการจัดรูปแบบที่ผิดพลาดหรือการแปลผิดพลาดหรือข้อผิดพลาดประเภทอื่น ๆ ที่เกี่ยวข้องกับการแปลภาษา- พื้นที่ทั้งหมดของความเชี่ยวชาญด้วยตัวเอง (แปลข้อความในภาพแปลซอฟต์แวร์เองแปลเอกสารการตลาดจัดการกับคำขอการสนับสนุนจากต่างประเทศปรับให้เข้ากับการตั้งค่าภาษาในระบบปฏิบัติการ ฯลฯ ) บางภาษาต้องการแอปพลิเคชันทั้งหมดเปลี่ยนเป็นบัญชีสำหรับคุณสมบัติภาษาของพวกเขา - ปัญหาทั่วไปคือมาโครสตริงและการตั้งค่าโค้ดเพจซึ่งหลังมีปัญหาน้อยกว่าด้วยการแนะนำ Unicode ดูภาพตัวอย่างจากเครื่องมือการแปล
  • การตั้งค่าเกือบทั้งหมดล้มเหลวในการทดสอบการตรวจสอบความถูกต้องหลายอย่างที่มีในตัวเพื่อทดสอบคุณภาพของแพ็คเกจ MSI ดูบทความนี้สำหรับตัวอย่างการตรวจสอบที่ใช้ได้จริง
  • บางครั้งการอัพเกรดล้มเหลวสำหรับ MSI เนื่องจากข้อเท็จจริงที่ว่ามีเพียง 3 หลักของหมายเลขเวอร์ชันของ MSI เท่านั้นที่ได้รับการตรวจสอบระหว่างการสแกนอัพเกรดหลัก
  • การติดตั้งไฟล์ INI เป็นคุณสมบัติในตัวของ Windows Installer รายการสามารถเพิ่มลบรวมหรือจัดการในรูปแบบที่จำเป็นใด ๆ อย่างไรก็ตามเป็นเรื่องปกติที่ไฟล์ INI จะได้รับการติดตั้งเป็นไฟล์แทนที่จะเป็นค่าที่แบ่งกลุ่ม สิ่งนี้อาจทำให้ไฟล์ INI ถูกเขียนทับในระหว่างการติดตั้งใหม่แทนที่จะถูกอัพเดต ปัญหา MSI ที่พบบ่อยมาก
  • ปัญหาข้างต้นเป็นกรณีของ. NET application และไฟล์ Config.xml ในกรณีนี้ MSI ไม่มีวิธีการอัปเดตเนื้อหาในตัวโดยละเอียดและคุณต้องใช้รหัสการอัปเดตผ่านการกระทำที่กำหนดเองหรือแทนที่ไฟล์ทั้งหมดเมื่อติดตั้ง Wix อาจมีคุณสมบัติใหม่สำหรับสิ่งนี้ แต่เอ็นจิ้น Windows Installer นั้นไม่มีในตัว

มีข้อผิดพลาดที่ละเอียดมากขึ้นและปัญหาทั่วไปที่ใหญ่กว่าที่ฉันจะลืม

ตรวจสอบการติดตั้ง Windows ปฏิบัติที่ดีที่สุดบทความจากMSDN


5

การใช้ MSI ยังทำให้การแพตช์ (ไฟล์ MSP) และการอัพเกรดง่ายขึ้น MSI ใช้แนวคิดของรหัสผลิตภัณฑ์และการอัปเกรดที่ไม่เหมือนใครซึ่งทำให้กระบวนการทั้งหมดง่ายขึ้น

ระบบการนำไปใช้งานบางระบบ (ตัวอย่างเช่นการส่งมอบซอฟต์แวร์ CA Unicenter) สามารถเข้าใจ MSI ในรูปแบบพิเศษซึ่งทำให้พวกเขาสามารถบูรณาการเข้ากับระบบการปรับใช้ได้ดีขึ้น ตัวอย่างเช่นคุณสามารถป้อน MSI ลงในไลบรารีซอฟต์แวร์ของระบบการปรับใช้และจะตรวจจับคุณสมบัติต่าง ๆ ภายในผลิตภัณฑ์โดยอัตโนมัติและอนุญาตการกระทำที่กำหนดเองที่ละเอียดยิ่งขึ้นโดยอัตโนมัติ

การรักษา / ซ่อมแซมด้วยตนเองนั้นเป็นข้อดีอย่างมากสำหรับ MSI


2

นอกจากนี้ให้ตรวจสอบ open source Windows Installer XML "ชุดเครื่องมือที่สร้างแพ็คเกจการติดตั้ง Windows จากซอร์สโค้ด XML ชุดเครื่องมือสนับสนุนสภาพแวดล้อมบรรทัดคำสั่งที่นักพัฒนาอาจรวมเข้ากับกระบวนการสร้างของพวกเขาเพื่อสร้างแพ็คเกจการติดตั้ง MSI และ MSM" สิ่งนี้ถูกใช้โดย MS เพื่อจัดทำชุดซอฟต์แวร์หลักหลายชุด


0

คุณสามารถทำการแปลงได้ - ตามทฤษฎีคุณสามารถปรับแต่งได้มากถ้าโปรแกรมถูกจัดแพคเกจอย่างถูกต้องโดยผู้จำหน่ายคุณสามารถทำการปรับใช้แบบอัตโนมัติโดยไม่ต้องมีการโต้ตอบกับผู้ใช้ - ซึ่งมีประโยชน์มากเมื่อคุณต้องการสร้างมาตรฐานสภาพแวดล้อมของหน้าต่าง ของคอมพิวเตอร์

เพื่อดูว่าผู้คนทำอะไรกับการเยี่ยมชม msis [หรือการปรับใช้แบบไม่ต้องใส่ข้อมูล] ตัวอย่างเช่นไซต์นี้และฟอรัม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.