ฉันจะสร้างโครงการ 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.