แอปพลิเคชั่นปรับปรุงตนเอง - ปรัชญา


15

นี่เป็นคำถามเชิงปรัชญา

ให้แอปพลิเคชันบนเดสก์ท็อปสมมุติและมีความปรารถนาที่จะให้การอัปเดตอัตโนมัติ (แทนที่จะบังคับให้ผู้คนไปที่เว็บไซต์ตรวจสอบการอัปเดตดาวน์โหลดอัปเดตติดตั้ง) ซึ่งสองวิธีนี้เป็นแนวปฏิบัติที่ดีที่สุด?

  1. เช่นเดียวกับiTunesจะตรวจสอบว่ามีเวอร์ชันใหม่และแจ้งให้ผู้ใช้ดาวน์โหลดเวอร์ชั่นใหม่หรือไม่ ถ้าเป็นเช่นนั้นจะดาวน์โหลดไฟล์ปฏิบัติการแบบเต็ม (ในกรณีนี้คือไฟล์Windows Installer (.msi)) ที่ติดตั้งเวอร์ชันเต็ม (ไม่ใช่แค่การอัพเกรดเป็นเวอร์ชั่นก่อนหน้า - มากเกินกว่าจะจัดการได้หากมีหลายรุ่น) . สมมุติว่าเป็นรุ่น 10.1.1 - ไม่ว่าคุณจะติดตั้งใหม่หรืออัพเกรดคุณใช้ไฟล์เดียวกัน หลังจากดาวน์โหลดแล้วผู้ใช้จะต้องปิดแอปพลิเคชันและเรียกใช้ไฟล์ติดตั้งด้วยตนเอง

  2. คล้ายกับอีกรุ่นหนึ่งจะตรวจสอบรุ่นใหม่และแจ้งให้ผู้ใช้ดาวน์โหลด แต่แทนที่จะดาวน์โหลดเพียงไฟล์ปฏิบัติการและแจ้งให้ผู้ใช้เรียกใช้มันจะเปิดใช้งานจริงสำหรับพวกเขา - ปิดโปรแกรมที่เปิดอยู่ ความปลอดภัยที่จำเป็นสำหรับการติดตั้งไฟล์

ปัญหาเกี่ยวกับ # 2: ปัญหามากมายเกี่ยวกับโปรแกรมปิดตัวลงเนื่องจากโปรแกรมสามารถเปิดโปรแกรมอื่น ๆ ( OutlookและExcel ) หรือจะเกิดอะไรขึ้นถ้าผู้ใช้อยู่ตรงกลางของบางสิ่ง นอกจากนี้ในด้านความปลอดภัยคุณต้องมีสิทธิ์ของผู้ดูแลระบบในการติดตั้งหากคุณไม่มี ใน Windows รุ่นที่ใหม่กว่าคุณไม่สามารถแทนที่ความปลอดภัยของบุคคลนั้นได้

ปัญหาของ # 1: บางคนเชื่อว่าสิ่งนี้จะยากเกินไปความพยายามมากเกินไปสำหรับผู้ใช้ปลายทาง

ฉันอยากจะไปกับ # 1 อย่างยิ่งเพราะมันจะประหยัดเวลา 80-120 ชั่วโมงในโครงการของฉันและง่ายต่อการติดตั้งและบำรุงรักษา อย่างไรก็ตามเรามีคนที่รู้สึกอย่างแรงกล้าในทุกด้าน

การปฏิบัติที่ดีที่สุดสำหรับสิ่งนี้คืออะไร?


ฉันไม่แน่ใจว่ามันเป็นปรัชญาดูเหมือนว่าเธอกำลังมองหาทางออกให้ฉัน

ดังนั้นการถามคำถามเกี่ยวกับการออกแบบ / สถาปัตยกรรมจึงไม่เป็นไร

คำถามของฉันคือทำไม # 2 ต้องการให้โปรแกรมปิดและรีสตาร์ท? หากเป็นการอัปเดตด้านความปลอดภัยก็สามารถเข้าใจได้ แต่ผู้ใช้ปกติปิดและเปิดโปรแกรมใหม่อย่างน้อยวันละครั้งถ้าไม่มากกว่าดังนั้นทำไมไม่ติดตั้งในพื้นหลังให้ผู้ใช้รันโปรแกรมโดยใช้เวอร์ชั่นเก่าในหน่วยความจำ และจากนั้นเมื่อพวกเขาเริ่มต้นใหม่ให้ใช้รุ่นใหม่ที่ติดตั้ง ไม่ยุ่งยากไม่ยุ่งยาก
Mike S

@ ไมค์ S: มันเป็นไปไม่ได้บน Windows (ไม่สามารถเขียนทับไฟล์ปฏิบัติการที่กำลังทำงานอยู่) และแม้กระทั่งบน Linux ก็ไม่ใช่ความคิดที่ดีโดยเฉพาะอย่างยิ่ง (ถ้าคุณเปิดอินสแตนซ์อื่นคุณจะมีรหัสเก่าทำงานอยู่ - ถ้าเกิดว่า IPC เกิดขึ้นมันยิ่งแย่ลง)
Dean Harding

จากประสบการณ์: หากคุณตรวจสอบการอัปเดตอย่าให้โปรแกรมของคุณทำทุกวันเวลาเที่ยงคืนหรือบ่ายสามโมง ดูเหมือนว่าสมเหตุสมผล แต่คุณสิ้นสุด DDOS ในการเซิร์ฟเวอร์ของคุณเอง เพียงเพิ่มแบบสุ่มได้สูงสุด 3,600 วินาที มันไม่ได้เป็นที่เร่งด่วน
MSalters

คำตอบ:


20

โดยส่วนตัวฉันชอบวิธีการของ Google Chrome ไดเรกทอรีฐานที่มีตัวเรียกใช้และไดเรกทอรีย่อยสำหรับซอฟต์แวร์แต่ละเวอร์ชันที่ติดตั้ง ตัวเรียกใช้งานมองหาหมายเลขเวอร์ชันสูงสุดและใช้และลบเวอร์ชันเก่าตามต้องการ ภารกิจตัวอัปเดตรันบ่อยครั้งเพื่อดาวน์โหลดและสร้างไดเรกทอรีใหม่ เมื่อติดตั้งเวอร์ชันใหม่แล้วแอปพลิเคชั่นที่ทำงานอยู่จะขอให้รีสตาร์ทเพื่อใช้เวอร์ชันใหม่


4
+1 สำหรับการชี้ให้เห็นถึงพฤติกรรมที่ดีของ Google ความแตกต่างคือ Adobe Acrobat Reader ซึ่งทุก ๆ วันที่ 2 มีแพทช์เร่งด่วนที่เห็นได้ชัดในการติดตั้งและรบกวนการทำงานอย่างต่อเนื่องของคนคนหนึ่ง
Ingo

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

@Cosmin หากคุณไม่ต้องการใช้% appdata% คุณสามารถใช้% ProgramData% เพื่อจัดเก็บไฟล์ที่ดาวน์โหลด วิธีที่ถูกต้องทางปรัชญามากขึ้นคือการจัดเก็บไฟล์เก็บถาวรที่นั่นจากนั้นยกระดับการติดตั้งในครั้งต่อไปที่โปรแกรมทำงาน
เบคอน Bits

รักคำตอบนี้และฉันวางไว้ในกระเป๋าหลังของฉัน (สำหรับตอนนี้การดาวน์โหลดสไตล์ "Itunes" ได้พบความสนใจอย่างกว้างขวางสำหรับเหตุผลด้านการประหยัดค่าใช้จ่าย)
Shannon Davis

3

คุณไม่ควรสร้างรายการเริ่มต้นที่ไม่จำเป็นเพื่อตรวจสอบการอัปเดตเช่น Adobe Flash Player (มันยากที่จะติดตามพวกเขาทั้งหมดและฉันไม่สามารถหาวิธีปิดการใช้งานเช็ค ... ) หรือ iTunes มันสร้างความรำคาญให้กับผู้ใช้ (geeks, anyways) ตัวเลือกที่ดีที่จะตรวจสอบการปรับปรุงที่เริ่มต้นการประยุกต์ใช้เช่น Firefox ไม่

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

เพียงให้แน่ใจว่าได้รวมตัวเลือก:

ตรวจสอบการอัปเดตได้ที่:

  • เข้าสู่ระบบ (ถ้าคุณต้องการรบกวน geeks)
  • การเริ่มต้นแอปพลิเคชัน ( เปิดค่าเริ่มต้น)
  • ทุกสองสามสัปดาห์ ( ปิดตามค่าเริ่มต้น)

หรือสิ่งที่คล้ายกัน


ถ้ามันคุ้มค่ากับความพยายามฉันจะบอกว่าให้ทำ นั่นคือการตัดสินใจของคุณ


2

ฉันคิดว่าคุณต้องการตั้งค่า "ClickOnce"

http://msdn.microsoft.com/en-us/library/142dbbz4(v=vs.90).aspx

ClickOnce เป็นเทคโนโลยีการปรับใช้ที่ช่วยให้คุณสร้างแอพพลิเคชั่นที่ทำงานบน Windows ซึ่งสามารถติดตั้งและรันด้วยการโต้ตอบกับผู้ใช้น้อยที่สุด การปรับใช้ ClickOnce จะเอาชนะปัญหาสำคัญสามประการในการปรับใช้:

ความยากลำบากในการอัพเดทแอพพลิเคชั่น ด้วยการปรับใช้ Microsoft Windows Installer ทุกครั้งที่มีการอัปเดตแอปพลิเคชันผู้ใช้จะต้องติดตั้งแอปพลิเคชันใหม่ทั้งหมด ด้วยการปรับใช้ ClickOnce คุณสามารถให้การอัปเดตอัตโนมัติ เฉพาะส่วนต่าง ๆ ของแอปพลิเคชันที่มีการเปลี่ยนแปลงเท่านั้นที่จะถูกดาวน์โหลดจากนั้นแอพพลิเคชั่นที่อัปเดตใหม่ทั้งหมดจะถูกติดตั้งใหม่จากโฟลเดอร์แบบเคียงข้างกัน

ส่งผลกระทบต่อคอมพิวเตอร์ของผู้ใช้ ด้วยการติดตั้ง Windows Installer แอปพลิเคชันมักจะพึ่งพาส่วนประกอบที่ใช้ร่วมกันโดยมีความเป็นไปได้ที่จะเกิดข้อขัดแย้งเกี่ยวกับเวอร์ชัน ด้วยการปรับใช้ ClickOnce แต่ละแอปพลิเคชั่นจะมีในตัวและไม่สามารถรบกวนแอปพลิเคชันอื่น ๆ ได้

สิทธิ์ด้านความปลอดภัย การปรับใช้ Windows Installer ต้องการสิทธิ์ระดับผู้ดูแลระบบและอนุญาตให้ติดตั้งได้อย่าง จำกัด การปรับใช้ ClickOnce ช่วยให้ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบสามารถติดตั้งและให้สิทธิ์การเข้าถึงความปลอดภัยของรหัสที่จำเป็นสำหรับแอปพลิเคชันเท่านั้น


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

ฉันรู้สึกขอบคุณข้อมูลนี้อยู่แล้วและฉันจะแบ่งปันกับนักพัฒนาซอฟต์แวร์เพื่อดูว่าเขาคิดว่ามันเป็นตัวเลือกหรือไม่ - บางทีเขาคิดว่าเขาจะต้องพัฒนากระบวนการปรับปรุงด้วยตัวเอง

คริสโตเฟอร์เอามันขึ้นกับ MS นั่นโดยตรงจาก MSDN นั่นเป็นความคิดเห็นที่เป็นประโยชน์จริงๆ

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

2

ผมเองมาแสดงความชื่นชมการใช้งานที่จะทำบางสิ่งบางอย่างที่คล้ายกับกรอบ Sparkle ฉันเดาว่ามันเป็นสิ่งที่ Mac เท่านั้น แต่มันทำสิ่งต่อไปนี้ (จากส่วนบนของหัวของฉัน - ฉันคิดว่าพฤติกรรมสามารถปรับเปลี่ยนได้)

  1. ตรวจสอบการอัปเดต (โดยปกติเมื่อเริ่มต้นแอปพลิเคชัน)
  2. หากมีหนึ่งหน้าต่างที่แยกต่างหากจะแสดงพร้อมกับการเปลี่ยนแปลงในรูปแบบที่สวยงาม
  3. ผู้ใช้สามารถข้ามเวอร์ชันนั้นติดตั้งหรือเลือกที่จะเตือนในภายหลัง
  4. หากเขาตัดสินใจที่จะติดตั้งแอปพลิเคชันแถบความคืบหน้าจะปรากฏใต้การเปลี่ยนแปลง
  5. หลังจากดาวน์โหลดผู้ใช้สามารถตัดสินใจที่จะออกจากแอปพลิเคชันและติดตั้งทันทีหรือติดตั้งหลังจากที่เขาออกจากแอปพลิเคชัน

เมื่อพิจารณาว่าคุณกำลังพูดถึง. msi กรอบงานเฉพาะนี้ไม่สามารถใช้งานได้จริง แต่ในกรณีนี้ฉันอยากจะไปกับโซลูชันที่มีอยู่มากกว่าการปรับแต่งล้อ


1

ฉันจะบอกว่าคุณต้องรู้จักผู้ใช้ของคุณจริงๆ หากพวกเขาเข้าใจและหรือมีความสนใจอย่างมากในการอยู่ถึงวันที่ # 1 จะทำงาน

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

เวลาจะมาจากการพัฒนา (# 2) หรือการสนับสนุน (# 1)


1

แล้วเรื่องนี้ล่ะ

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

คุณไม่จำเป็นต้องรบกวนผู้ใช้คุณไม่จำเป็นต้องปิดอะไร ...


1

ทำไมไม่มีอะไรอยู่ตรงกลาง

แจ้งให้ดาวน์โหลด (หรือเลือก "ดาวน์โหลดโดยอัตโนมัติ") หลังจากเสร็จสิ้นการแจ้งเตือนให้ติดตั้งการปรับปรุงที่ดาวน์โหลด (รัน. msi) วิธีนี้คุณจะทำให้ข้อเสียของ # 2 (ปิดลงกลางงานของผู้ใช้) และยังคงความสะดวกสบายด้วยค่าใช้จ่ายในการคลิกเพิ่มขึ้น 1 ครั้ง

กล่องโต้ตอบ" ปิดและติดตั้งการปรับปรุง? " ควรเข้าถึงได้ง่าย (แต่ไม่น่ารำคาญ) เมื่อผู้ใช้ปฏิเสธในตอนแรก เมื่อมี "เปิดใช้งาน <ชื่อโปรแกรม>?" ช่องทำเครื่องหมายในตอนท้ายของ. msi เกือบจะเหมือน # 2 โดยที่ไม่ต้องทำงานอีกต่อไป

@ security
โปรแกรมใน Windows รุ่นใหม่สามารถขออนุญาตดำเนินการที่ต้องการสิทธิ์ผู้ดูแลระบบ (ผู้ใช้จะแสดงพร้อมท์โดยที่เขาพิมพ์รหัสผ่านของผู้ดูแลระบบจากนั้นเลือก "ใช่ / ไม่ใช่" จะอนุญาตหรือไม่)


1

ฉันมีโรงรับจำนำ 124 แห่งที่ใช้แอพเดสก์ทอป Pawnshop Management ของฉัน เมื่อใดก็ตามที่ฉันมีการอัปเดตใหม่ฉันเผยแพร่อีเมลถึงพวกเขาเพื่อให้พวกเขาทราบเกี่ยวกับการอัปเดตและรายละเอียดของมัน จากนั้นพวกเขาก็มีตัวเลือกให้ FTP โดยเข้าสู่เว็บไซต์ของฉัน พวกเขายังมีตัวเลือกในการย้อนการอัพเดท เว็บไซต์ของฉันยังติดตามรุ่นที่ติดตั้งโรงรับจำนำแต่ละแห่ง

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