Windows Installers สำหรับแอปพลิเคชันธุรกิจภายในเหมาะสมหรือไม่


14

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

  1. โปรแกรมติดตั้งยินดีต้อนรับในสภาพแวดล้อมขององค์กรทั่วไปด้วยสิ่งต่อไปนี้หรือไม่?
    • เปลี่ยนกระบวนการควบคุม
    • สภาพแวดล้อม Dev / QA / การผลิต
    • กำหนดทีมปรับใช้สำหรับพื้นที่ต่าง ๆ (ไฟร์วอลล์ฐานข้อมูล windows ฯลฯ )
  2. มี "การทดสอบสารสีน้ำเงิน" ที่สามารถนำไปใช้กับแอปพลิเคชันเพื่อดูว่ามันเป็นตัวเลือกที่ดีสำหรับการสร้างตัวติดตั้งหรือไม่? * * * *
    • โปรแกรมติดตั้งนั้นง่ายพอที่ทุกแอปพลิเคชั่นควรมีหรือไม่
    • ตัวติดตั้งเป็นเครื่องมือที่ใช่หรือไม่?
  3. มันสมเหตุสมผลหรือไม่ที่นักพัฒนาคาดว่าจะเรียนรู้บางอย่างเช่น WiX เพื่อสนับสนุนตัวติดตั้ง?
    • การบำรุงรักษาโดยทั่วไปเป็นเรื่องที่ต้องคำนึงถึงนั่นคือการสร้างโปรแกรมติดตั้งให้เป็นทักษะเฉพาะหรือไม่?

* * * *

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

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

Edit--

ฉันรู้สึกว่าคำตอบที่นี่ให้คำแนะนำที่มั่นคงดังนั้นฉันต้องการแบ่งปันสิ่งที่ฉันเกิดขึ้นสำหรับโครงการปัจจุบันของฉันที่ฉันต้องการสร้างแอปพลิเคชั่นจำนวนมากและปรับใช้กับโฟลเดอร์แต่ละโฟลเดอร์

ฉันพบแพ็คเกจ NuGet ชื่อ_PublishedApplicationsซึ่งเลียนแบบพฤติกรรมของ _PublishedWebsites สำหรับโครงการเว็บ แนวคิดคือคุณติดตั้งแพ็กเกจ NuGet ลงในโครงการของคุณและเพิ่มเป้าหมายที่จะคัดลอกสิ่งประดิษฐ์บิลด์ไปยังไดเรกทอรี _PublishedApplications ในพา ธ เอาต์พุต พฤติกรรมนี้เปิดใช้งานโดยการเรียกใช้ MSBuild จากบรรทัดคำสั่งและระบุoutdirคุณสมบัติ:

msbuild /p:Configuration=Release /p:outdir=C:\path\to\outdir MySolution.sln

สิ่งนี้จะทำให้โครงสร้างไดเรกทอรีคล้ายกับที่แสดงต่อไปนี้:

  • C: \ เส้นทาง \ to \ outdir
    • _PublishedApplications \
      • Project1 \
        • dlls, exes, etc.
      • Project2 \
        • ...

จากตรงนั้นการสร้างซิปที่สามารถดึงออกมาในสภาพแวดล้อมที่หลากหลายนั้นค่อนข้างเจ็บปวด


6
หากคุณต้องระบุตัวติดตั้งคุณสามารถให้ตัว.msiติดตั้งได้หรือไม่ อย่างน้อยที่สุดก็สามารถเป็นไปได้โดยอัตโนมัติด้วยความเจ็บปวดน้อยที่สุด (ในขณะที่ยังคงเข้าใจได้สำหรับผู้ใช้ในบางครั้งที่ต้องทำการอัปเดตของตัวเอง)
ZJR

ตัวอย่างของคุณ: ฉันมีสคริปต์ที่พยายามเปลี่ยนชื่อไดเรกทอรีการผลิตเป็นชื่อชั่วคราวให้คัดลอกไฟล์แอปพลิเคชันทั้งหมดลงใน dir ที่เปลี่ยนชื่อแล้วเปลี่ยนชื่อไดเรกทอรีการผลิตกลับเป็นชื่อเดิม (และตรวจสอบข้อผิดพลาดหลังจากแต่ละรายการ! ) ขั้นตอน) ข้อดีคือตราบใดที่มีคนใช้เวอร์ชั่นเก่าการเปลี่ยนชื่อครั้งแรกล้มเหลวและคุณไม่ได้ทำลายสภาพแวดล้อมการผลิตโดยไม่ตั้งใจ ผู้ดูแลระบบที่ดีอาจสามารถสร้างสคริปต์ดังกล่าวได้ด้วยตนเอง แต่คนอื่น ๆ อาจรู้สึกขอบคุณถ้าคุณให้ "ผู้ติดตั้ง" ดังกล่าวแก่พวกเขา ขึ้นอยู่กับองค์กรของคุณ
Doc Brown

@ Mark0978: ฉันจะได้กลิ่น "Linux" เทียบกับ "Windows" ที่นี่หรือไม่ นี่คือหัวข้อ 100% off ที่นี่
Doc Brown

คำตอบ:


20

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

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

ในทางกลับกันหากคุณไม่มีงานการตั้งค่าใด ๆ ที่ต้องดำเนินการจากนั้นเพียงแค่ให้ไฟล์ zip แก่พวกเขา ง่ายกว่าเรียกใช้โปรแกรมติดตั้ง


11

ไวแอตต์ถอดหมวกโปรแกรมเมอร์ของเขาและสวมหมวกผู้อำนวยการฝ่ายไอที

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

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


5
+1 Ross ยืมหมวกของไวแอตต์และเสริมว่าทีมไอทีรักผู้ติดตั้งเพราะพวกเขาทิ้งลายนิ้วมือไว้ด้านหลังซึ่งระบุว่า " สิ่งนี้ติดตั้งแล้ว "
Ross Patterson

3
หมวกไอทีของฉันบอกว่าสร้างใน HTML5 และออกจากการติดตั้งสิ่งต่าง ๆ บนเดสก์ท็อป!
boatcoder

8

แอพพลิเคชั่น Windows Installer ใช้กันอย่างแพร่หลายเพื่อติดตั้งแอปพลิเคชั่นทางธุรกิจภายในในสภาพแวดล้อมที่ใช้ Windows คุณควรถามตัวเองด้วยว่าชีวิตของแอปพลิเคชั่นนั้นจะต้องได้รับการอัปเดตปรับปรุงซ่อมแซมหรือลบออกจากระบบของผู้ใช้หรือไม่ ในหลายกรณีคำตอบคือ "ใช่" - ในกรณีที่มีตัวติดตั้งที่เขียนอย่างถูกต้องสามารถลดค่าใช้จ่ายทั้งหมดในการบำรุงรักษาแอปพลิเคชันเมื่อเวลาผ่านไป มีบริการและคุณสมบัติอื่น ๆ ที่ออกแบบมาเพื่อทำงานกับ Windows Installer เช่น Restart Manager และ WMI และฟังก์ชั่นสินค้าและแพตช์สินค้าคงคลัง หากแอปพลิเคชันของคุณได้รับประโยชน์จากสิ่งเหล่านี้แสดงว่าเป็นอีกสาเหตุหนึ่งที่รวมถึงตัวติดตั้ง

ค่าใช้จ่ายล่วงหน้าในการพัฒนาเครื่องมือติดตั้งที่มีประโยชน์สำหรับแอปพลิเคชันของคุณอาจชำระในระยะยาวและลดต้นทุนการพัฒนาได้ด้วยการเลือกเครื่องมือสร้าง Windows Installer ที่เหมาะสมเช่น WiX หรือ InstallShield หรืออื่น ๆ


7

เช่นเดียวกับการตัดสินใจทางวิศวกรรมทั้งหมดขึ้นอยู่กับ

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

เนื่องจากมันเป็นแบบภายในฉันคิดว่ามันถูกปรับใช้โดยแผนกไอทีภายใน พวกมันอาจไม่ใช่คนแปลกหน้าในการสั่งเชลล์

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

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

ที่ที่ฉันทำงานอยู่เว็บแอปพลิเคชันทั้งหมดของเราจะถูกติดตั้งผ่านตัวช่วยสร้าง InstallShield ซึ่งถามคำถามมากมายซึ่งส่วนใหญ่เป็นที่ตั้งของระบบไฟล์ข้อมูลการเชื่อมต่อฐานข้อมูลและการตั้งค่าอื่น ๆ เป็นการยากที่จะทำให้เป็นอัตโนมัติ ตั้งแต่การติดตั้งเว็บแอพที่เป็นแกนหลักเพิ่งสร้างฐานข้อมูลและคัดลอกไฟล์ฉันจึงเขียนตัวติดตั้งใหม่โดยใช้ Ant หรือ Powershell ซึ่งเรียกใช้ไฟล์. sql และคัดลอกไฟล์

จากนั้นทุกคนสามารถเข้าใจวิธีการทำงานและบำรุงรักษาให้มีประสิทธิภาพยิ่งขึ้น


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

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