ฉันจะสร้างโครงการ InstallShield LE เพื่อติดตั้งบริการ Windows ได้อย่างไร


104

ฉันดาวน์โหลด Visual Studio 2012 เมื่อวานตอนที่เผยแพร่บน MSDN ฉันสังเกตเห็นว่าโครงการบางประเภทที่เรามีในปี 2010 นั้นหายไปหรือแตกต่างออกไป ความแตกต่างที่ใหญ่ที่สุดสำหรับฉันในตอนนี้คือการลบโครงการ Windows Installer ตอนนี้เราถูกบังคับให้ใช้ InstallShield LE (Limited Edition) ปัญหาคือฉันเขียน Windows Services เป็นจำนวนมากและฉันไม่เห็นวิธีการตั้งค่า InstallShield LE ดูเหมือนว่าเรา (บริษัท ของฉัน) จะต้องลงทุนในใบอนุญาตสำหรับฉบับมืออาชีพ

มีใครพบวิธีติดตั้งบริการใน InstallShield LE บ้าง? เมื่อใช้โครงการ Windows Installer คุณเพียงแค่ตั้งค่าการดำเนินการแบบกำหนดเอง


1
การใช้แอคชันแบบกำหนดเองของ InstallUtil ในโปรเจ็กต์การปรับใช้ Visual Studio เป็นวิธีปฏิบัติที่แย่มาก โดยพื้นฐานแล้วเป็นการสร้างล้อใหม่ด้วยโซลูชันที่เปราะบางเนื่องจากเครื่องมือสร้างพื้นฐานไม่ได้เปิดเผยความสามารถดั้งเดิมของ MSI
— Christopher Painter

คำตอบ:


161

สำหรับ Visual Studio 2012 & InstallShield LE ให้ทำดังต่อไปนี้:

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

ส่วนไฟล์

  • คลิกขวาที่ผลลัพธ์หลักของบริการของคุณและไปที่คุณสมบัติ
  • คลิกแท็บ "COM และ. NET Settings" และทำเครื่องหมายในช่อง "Installer Class" ป้อนคำอธิบายภาพที่นี่
  • คลิกตกลง

ตอนนี้เมื่อคุณสร้างและเรียกใช้การติดตั้งแล้วบริการของคุณจะปรากฏใน Windows Services snap in

โปรดทราบว่าสิ่งนี้จะถือว่าคุณได้เพิ่ม "Project Installer" ลงในโปรเจ็กต์บริการของคุณ (คลิกขวาที่แผ่นงานออกแบบบริการแล้วคลิก "เพิ่มตัวติดตั้ง") ฉันสามารถยืนยันงานนี้บน Windows 8 ด้วย Visual Studio 2012 / InstallShield LE


ตกลงมันใช้ได้กับ VS 2010 และ Win 7 Pro ด้วย ฉันยังไม่ได้ลองใน VS 2012 แต่ควรทำ ขอบคุณ.
— fizch

3
เป็นไปได้ไหมที่จะมีกล่องโต้ตอบถามผู้ใช้เกี่ยวกับสตริงการเชื่อมต่อฐานข้อมูล (เซิร์ฟเวอร์การรับรองความถูกต้องและชื่อฐานข้อมูล) และอัปเดตไฟล์การกำหนดค่าบริการ windows โดยใช้ InstallShield LE
— Adelia Benalius

2
นี่เป็นคำแนะนำที่ดีงาม: c-sharpcorner.com/uploadfile/cb88b2/… .
— Jonty

1
Visual Studio Installer Project ใน VS 2013 ดาวน์โหลด: visualstudiogallery.msdn.microsoft.com/… User voice: visualstudio.uservoice.com/forums/121579-visual-studio/… Reference: blogs.msdn.com/b/visualstudio/archive /
— 2014/04/17

1
ตัวเลือกนี้ไม่เริ่มบริการหลังการติดตั้ง การติดตั้งบริการและการเริ่มต้นในการแก้ปัญหา Explorer ให้เลือก3. กำหนดค่าเป้าหมายระบบ> บริการ
— Rajeev

24

ฉันเพิ่งติดตั้ง VS 2012 ด้วย Install Shield LE ตอนแรกฉันยังคงได้รับข้อผิดพลาดเซิร์ฟเวอร์ภายใน ISEXP -5036 หลังจากสร้าง (นี่คือหลังจากตั้งค่าโครงการ ISLE และเรียกใช้ผ่านตัวช่วยติดตั้งโครงการโล่) ในที่สุดฉันก็พบว่ามันพยายามสร้าง MSI ในประเภทสื่อ DVD-5 ซึ่งเป็นจุดที่ล้มเหลว ด้วยเหตุผลบางประการการสร้างโซลูชันอีกครั้งตั้งแต่เริ่มต้นจึงจำได้ว่าสร้างเฉพาะสื่อประเภท CD_ROM และ SingleImage เท่านั้นที่ใช้งานได้

อย่างไรก็ตามในการแก้ไขข้อผิดพลาด 5036 ให้คลิกแท็บสร้างใน VS 2012 (เมนูด้านบน) เลือกตัวจัดการการกำหนดค่าและคุณจะเห็นว่าไฟล์การตั้งค่า IS ของคุณถูกเลือกในการกำหนดค่า DVD-5 เปลี่ยนเป็น CD_ROM แล้วคลิกปิด เมื่อคุณสร้าง / สร้างใหม่จะเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด IS 5036

ป้อนคำอธิบายภาพที่นี่


2
สิ่งนี้อาจไม่เกี่ยวข้องกับปัญหาของเขา แต่มันช่วยแก้ปัญหาของฉันได้ ขอบคุณ! +1
— David

ปัญหาเดียวกันสำหรับฉันทันทีเมื่อเริ่มต้นการติดตั้งเริ่มต้นมี DVD-5 เนื่องจากการกำหนดค่าและการตั้งค่าล้มเหลวในการสร้าง ด้วยเคล็ดลับของคุณฉันเปลี่ยนเป็นภาพเดี่ยวและสร้างขึ้นโดยไม่มีปัญหา!
— Nick Bork

DVD-5 ถูกเลือก คำตอบที่เรียบง่าย แต่ยอดเยี่ยม
— beaumondo

6

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

ข้อผิดพลาด 1001 บริการที่ระบุมีอยู่แล้ว

นี่คือข้อความที่ตัดตอนมาจากลิงก์นี้เกี่ยวกับวิธีแก้ไขปัญหานี้:

สำหรับข้อผิดพลาด: ข้อผิดพลาด 1001 บริการที่ระบุมีอยู่แล้ว

ข้อผิดพลาดนี้จะเกิดขึ้นหากคอมโพเนนต์ที่ติดตั้งบริการ. NET ถูกกำหนดค่าอย่างไม่ถูกต้องโดยตั้งค่า ".NET Installer Class" เป็นใช่ วิธีการติดตั้ง. NET Service คือการใช้มุมมอง Component \ Advanced Settings \ Services ไม่ใช่การตั้งค่า ".NET Installer Class" การสร้างคำจำกัดความในมุมมอง Component \ Advanced Settings \ Services จะสร้างรายการในตาราง Windows Installer ServiceControl และ ServiceInstall รายการเหล่านี้ใช้โดยแอ็คชัน "InstallServices" ของ Windows Installer เพื่อติดตั้งบริการ


คุณช่วยและอธิบายเรื่องนี้ได้ไหม .... มุมมอง Component \ Advanced Settings \ Services "สามารถพบได้ ??
— pithhelmet

มันอยู่ในโปรแกรมติดตั้งรุ่นพรีเมียร์ (ffs! microsoft ทำไมคุณถึงเอาประเภทโครงการติดตั้งออก!) .. ถ้าคุณมีรุ่นพรีเมียร์ community.flexerasoftware.com/…
— Paul Hutchinson

ฉันพบว่ามันเกี่ยวข้องกับความยาวของชื่อโปรเจ็กต์การตั้งค่าเช่นเปลี่ยนชื่อโปรเจ็กต์การตั้งค่าของคุณให้สั้นลงเช่น "ติดตั้ง" หรือ "การตั้งค่า"
— Jonty

4

ถ้าโปรเจ็กต์ของคุณคือ. NET ให้ลองใช้คลาส ServiceProcessInstaller กับ InstallShield LE

เพื่อให้ทำงานกับ InstallShield ได้คุณต้องเข้าไปที่โครงสร้าง "files" ของ InstallShield แล้วคลิกขวาที่ไฟล์ของคุณ จากนั้นเลือกช่องทำเครื่องหมายสำหรับ "Installer class" บนแท็บ "COM และ. NET settings"

ฉันใช้งานได้แล้ว แต่ฉันมีปัญหากับระบบปฏิบัติการบางอย่างเช่น Windows 2008R2 ระยะทางของคุณอาจแตกต่างกันไป

นี่คือตัวอย่าง: http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows-Service-in-C


1
ขออภัย. ฉันไม่เห็นสิ่งนี้จนถึงวันนี้ ดูเหมือนว่ามันจะเป็นคำตอบเดียวกับที่ฉันยอมรับ ฉันจะ +1 ให้
— fizch

4

ฉันมีปัญหากับเรื่องนี้ทุกประเภท

ดังต่อไปนี้.

  1. InstallShield ใช้เวลานานในการดาวน์โหลด
  2. ขั้นตอนการลงทะเบียนเป็นความเจ็บปวด
  3. ตัวเลือกการกำหนดค่ามีความสับสนและซับซ้อนเกินไป
  4. วิธีแก้ปัญหาที่ได้รับการยอมรับในเธรดนี้คือการแฮ็กและไม่ได้ผลเสมอไป - ดู 1001 ในเอกสารประกอบ - โดยพื้นฐานแล้วคุณต้องผ่าน paywall เพื่อรับตัวเลือกการกำหนดค่าที่เหมาะสมเพื่อติดตั้งบริการ windows

วิธีแก้ปัญหาสำหรับฉันตามที่กล่าวไว้ที่อื่น - คือการละทิ้ง InstallShield

ป้อนคำอธิบายภาพที่นี่

ง่ายมากจากจุดนั้น

แก้ไข: อัปเดต - ติดตั้งเวอร์ชันล่าสุดจากที่นี่https://wix.codeplex.com/releases/view/115492สำหรับเทียบกับ 2013/2015


3

โครงการติดตั้ง Visual Studio กลับมาใน VS 2013 เป็นส่วนขยาย Visual Studio

https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

โปรดอัปเดตโซลูชันและโปรเจ็กต์ของคุณเป็น VS 2013 หากคุณยังอยู่ใน VS 2010 คุณน่าจะดีกว่าโดยการอัปเกรดเป็น VS 2013 โดยตรง

ประสบการณ์ของฉันกับการติดตั้ง LE คือมันแปลกมาก แต่เมื่อคุณเข้าใจเทคนิคต่างๆแล้วก็จะใช้งานได้ง่ายขึ้น อย่างไรก็ตามฉันคิดว่ารุ่นที่ จำกัด เป็นวิธีที่ Microsoft และ Flexera ขายรุ่นที่มีคุณสมบัติครบถ้วน กล่าวอีกนัยหนึ่งอันดับแรกเราจ่ายเงินให้กับ Microsoft เป็นจำนวนมากสำหรับ Visual Studio จากนั้นให้พันธมิตรของพวกเขา (ในด้านอาชญากรรม) เพิ่มเติมสำหรับการติดตั้ง กลยุทธ์ที่ไม่ดีซึ่งไม่ได้ผลเนื่องจากต้องนำโครงการติดตั้งกลับมาใน VS 2013


2

ฉันได้เขียนเกี่ยวกับเรื่องนี้:

การเพิ่ม InstallShield โดยใช้ Windows Installer XML - บริการของ Windows

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


เทคโนโลยีอื่นในการเรียนรู้? จนถึงเมื่อวานนี้ฉันไม่เคยได้ยิน WIX เลย ฉันยังไม่ทราบอะไรเกี่ยวกับมัน ดูเหมือนว่ากระบวนการทั้งหมดนี้จะยากขึ้นเรื่อย ๆ สำหรับบางสิ่งที่ใช้เวลาเพียงไม่กี่คลิก
— fizch

มันใช้เวลาเพียงไม่กี่คลิกเพื่อเรียกใช้โปรแกรมติดตั้ง การเขียนมันเป็นความพยายามมากขึ้น
— Christopher Painter

นอกจากนี้ยังใช้เวลาเพียงไม่กี่คลิกในการตั้งค่าตัวติดตั้ง คุณต้องพิมพ์หัวเรื่องผู้ผลิตและอื่น ๆ แต่คุณไม่จำเป็นต้องเขียนเอกสาร xml ทั้งหมด คุณสามารถบอกอะไรฉันเกี่ยวกับ WIX ได้บ้าง? ฉันบอกได้เลยว่าคุณรู้เรื่องนี้มาก มันคืออะไร? ฉันจะไปได้ที่ไหน ฉันจะใช้มันได้อย่างไร? ฯลฯ ...
— fizch

ฉันเขียนโปรแกรมติดตั้งมา 16 ปีแล้วและการติดตั้งแบบง่ายๆด้วย EXE เดียวและทางลัดก็นำฉันไปสู่ผู้เขียน 'เพียงไม่กี่คลิก' คุณสามารถค้นหา WiX ได้จาก CodePlex และมีหนังสือที่ตีพิมพ์ในหัวข้อนี้ เทคโนโลยีพื้นฐานคือ Windows Installer และเอกสารดังกล่าวสามารถพบได้ใน Platform SDK และบน MSDN
— Christopher Painter

5
"มีหนังสือตีพิมพ์เรื่อง ... docs on in the SDK" อย่างจริงจัง ?? คริสเรากำลังพยายามย้ายโซลูชันปี 2010 เป็นปี 2012 และการติดตั้ง / การตั้งค่าทำให้เราหยุดการทำงาน MS กลับมา VS Setup / Installer visualstudio.uservoice.com/forums/121579-visual-studio/…
— JimSTAT

2

ฉันใช้ VS2012 และ Installshield LE Spring Edition ฉันไม่ต้องใช้ Wix

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

เครดิตhttp://community.flexerasoftware.com/showthread.php?165929-Could-not-create-_isconfig-xml-for-use-with-InstallUtilLib-dll


2

ฉันมีปัญหาในการค้นหาตำแหน่งที่จะเพิ่มตัวติดตั้งตามที่อ้างถึงในคำตอบ นี่คือวิธีการ

ดับเบิลคลิกที่คลาสบริการของคุณภายในโครงการบริการ Windows ของคุณหน้าจอว่างที่มีข้อความ "ในการเพิ่มคอมโพเนนต์ในคลาสของคุณให้ลากจากกล่องเครื่องมือและใช้หน้าต่างคุณสมบัติเพื่อตั้งค่าคุณสมบัติ ... " คลิกขวาที่ใดก็ได้ยกเว้นในลิงก์ แล้วเลือก "Add Installer"

แล้วเจอกัน


0

โปรดทราบว่าคำอธิบายทั้งหมดข้างต้นจะไม่ช่วยคุณหากคุณวางแผนที่จะสร้างการอัปเกรดการตั้งค่านั้นในภายหลัง InstallShiled LE ไม่สามารถหยุดบริการที่กำลังทำงานอยู่เมื่อคุณอัปเกรด คุณไม่สามารถทำได้จาก Window Service Installer -> BeforeInstall event


0

ต้องการใส่สิ่งนี้ที่นี่;

ใน VS 2015 เมื่อทำสิ่งนี้ฉันพบข้อผิดพลาด 1001 เมื่อติดตั้งซ้ำ ๆ

คำตอบในหน้านี้อธิบายว่าในเวอร์ชันที่ใหม่กว่า (ปี 2012 ที่ผ่านมา)เห็นได้ชัดว่าคุณต้องไม่เลือกตัวเลือกคลาสตัวติดตั้งอย่างชัดเจนจากนั้นเพิ่มบริการ windows ของคุณในส่วนบริการภายใต้ขั้นตอนที่ 3 ของโครงการตัวติดตั้ง:

ข้อผิดพลาด 1001 เมื่อติดตั้ง Windows Service แบบกำหนดเอง

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