Come si crea un progetto InstallShield LE per installare un servizio Windows?


104

Ho scaricato Visual Studio 2012 ieri quando è stato rilasciato su MSDN. Ho notato che alcuni dei tipi di progetto che avevamo nel 2010 sono andati o diversi. La più grande differenza per me in questo momento è la rimozione del progetto Windows Installer. Ora siamo costretti a utilizzare InstallShield LE (Limited Edition). Il problema qui è che scrivo un sacco di servizi Windows e non riesco a vedere come configurare InstallShield LE. Sembra che noi (la mia azienda) dovremo investire in licenze per l'edizione professionale.

Qualcuno ha trovato un modo per installare i servizi in InstallShield LE? Quando si utilizza il progetto Windows Installer, è sufficiente impostare le azioni personalizzate.


1
L'utilizzo di azioni personalizzate InstallUtil nei progetti di distribuzione di Visual Studio era in realtà una pratica davvero scadente. Fondamentalmente sta reinventando la ruota con una soluzione fragile perché lo strumento di creazione sottostante non ha esposto le capacità native di MSI.
Christopher Painter

Risposte:


161

Per Visual Studio 2012 e InstallShield LE, eseguire le operazioni seguenti:

  • Esegui l'assistente del progetto InstallShield e aggiungi l'output principale del tuo servizio alla sezione File dell'applicazione.
  • Dopo aver terminato con l'assistente di progetto, fare doppio clic sulla voce "File" nel passaggio due del progetto di installazione.

Sezione file

  • Fai clic con il pulsante destro del mouse sull'output principale del tuo servizio e vai alle proprietà.
  • Fare clic sulla scheda "Impostazioni COM e .NET" e selezionare la casella di controllo "Classe di installazione". inserisci qui la descrizione dell'immagine
  • Fare clic su OK

Ora, una volta creata ed eseguita l'installazione, il servizio verrà visualizzato nello snap-in Servizi di Windows.

Si noti che ciò presuppone che sia stato aggiunto un "programma di installazione del progetto" al progetto del servizio (fare clic con il pulsante destro del mouse sul foglio di progettazione del servizio e fare clic su "aggiungi programma di installazione"). Posso confermare questo lavoro su Windows 8 con Visual Studio 2012 / InstallShield LE.


Ok, funziona anche in VS 2010 e Win 7 Pro. Devo ancora provarlo in VS 2012, ma dovrebbe bastare. Grazie.
fizch

3
È possibile avere una finestra di dialogo che chiede all'utente la stringa di connessione al database (server, autenticazione e nome del database) e aggiornare il file di configurazione del servizio Windows utilizzando InstallShield LE?
Adelia Benalius

2
Questa è una guida piuttosto buona: c-sharpcorner.com/uploadfile/cb88b2/… .
Jonty


1
Questa opzione non avvia il servizio dopo l'installazione. Per installare il servizio e avviarlo, in Esplora soluzioni, selezionare 3. Configura sistema di destinazione> Servizi .
Rajeev

24

Di recente ho installato VS 2012 con Install Shield LE. All'inizio continuavo a ricevere un errore interno del server ISEXP -5036 dopo una build (questo era dopo aver impostato un progetto ISLE ed eseguito tramite Install Shield Project Assistant). Alla fine ho scoperto che stava cercando di creare l'MSI nel tipo di supporto DVD-5, che è dove stava fallendo. Per qualche ragione, creare di nuovo la soluzione da zero in qualche modo riconosce di compilare solo i tipi di supporto CD_ROM e SingleImage che funzionano.

Ad ogni modo, per correggere l'errore 5036, fare clic sulla scheda Build in VS 2012 (menu in alto), selezionare Configuration Manager e dovresti vedere che il tuo file di installazione IS è selezionato nella configurazione DVD-5. Cambia questo in CD_ROM e fai clic su Chiudi. Una volta creato / ricostruito, verrà completato senza errori IS 5036.

inserisci qui la descrizione dell'immagine


2
Questo potrebbe non avere nulla a che fare con il suo problema, ma ha risolto il mio. Grazie! +1
David

Stesso problema per me fin dall'inizio, l'installazione predefinita aveva DVD-5 come configurazione e l'installazione non è riuscita a creare. Con il tuo suggerimento l'ho cambiato in Single Image e l'ho costruito senza problemi!
Nick Bork

È stato selezionato DVD-5. Risposta semplice ma ottima
beaumondo

6

Mentre l'utilizzo della casella di controllo della classe del programma di installazione potrebbe funzionare per alcune istanze, potresti riscontrare il seguente errore:

Errore 1001 Il servizio specificato esiste già

Ecco un estratto da questo collegamento su come risolvere questo problema:

Per errore: errore 1001 Il servizio specificato esiste già

Questo errore si verificherà se il componente che installa un servizio .NET è configurato in modo errato con ".NET Installer Class" impostato su Sì. Il metodo per installare un servizio .NET consiste nell'utilizzare la visualizzazione Component \ Advanced Settings \ Services, non l'impostazione ".NET Installer Class". La creazione di definizioni nella vista Component \ Advanced Settings \ Services crea voci nelle tabelle ServiceControl e ServiceInstall di Windows Installer. Queste voci vengono utilizzate dall'azione "InstallServices" di Windows Installer per installare il servizio.


potresti aiutare e spiegare questo .... La vista Component \ Advanced Settings \ Services può essere trovata ??
pithhelmet

è nell'edizione premier dell'installer (ffs! microsoft perché hai eliminato il tipo di progetto di installazione!) .. Se hai l'edizione premier. community.flexerasoftware.com/…
Paul Hutchinson

Ho scoperto che è correlato alla lunghezza del nome del progetto di installazione, ad esempio cambia il nome del progetto di installazione in qualcosa di più breve come "Installa" o "Installazione".
Jonty

4

Se il tuo progetto è .NET, prova a utilizzare la classe ServiceProcessInstaller con InstallShield LE.

Per farlo funzionare con InstallShield, devi andare nell'albero dei "file" di InstallShield e fare clic con il tasto destro sul tuo file. Quindi seleziona la casella di controllo "Classe di installazione" nella scheda "Impostazioni COM e .NET".

L'ho fatto funzionare, ma ho avuto problemi con alcuni sistemi operativi come Windows 2008R2. Il tuo chilometraggio può variare.

Ecco un esempio: http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows-Service-in-C


1
Scusate. Non l'ho visto fino ad oggi. Sembra che sia più o meno la stessa risposta di quella che ho accettato. Lo farò +1.
fizch

4

Ho avuto tutti i tipi di problemi con questo.

Come segue.

  1. InstallShield impiega anni per il download
  2. il processo di registrazione è un dolore.
  3. le opzioni di configurazione sono confuse ed eccessivamente complesse.
  4. la soluzione accettata su questo thread è un hack e non sempre funziona - vedere 1001 nella documentazione - essenzialmente è necessario passare attraverso il paywall per ottenere le giuste opzioni di configurazione per installare un servizio Windows.

La soluzione per me, come menzionato altrove, era abbandonare InstallShield

inserisci qui la descrizione dell'immagine

Molto facile da quel punto.

Modifica: Aggiorna: installa l'ultima versione da qui https://wix.codeplex.com/releases/view/115492 per vs 2013/2015


3

I progetti di installazione di Visual Studio sono tornati in VS 2013 come estensione di Visual Studio.

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

Aggiorna la tua soluzione ei tuoi progetti a VS 2013. Se sei ancora in VS 2010, probabilmente starai meglio aggiornando direttamente a VS 2013.

La mia esperienza con InstallSheild LE è che è molto bizzarro ma una volta individuati i trucchi, è più facile da usare. Tuttavia, penso che l'edizione limitata sia un modo di Microsoft e Flexera per vendere l'edizione completa. In altre parole, prima paghiamo un sacco di soldi a Microsoft per Visual Studio e poi al loro partner (nel crimine) di più per InstallSheild. Strategia sbagliata che non ha funzionato poiché hanno dovuto riportare i progetti di installazione in VS 2013.


2

Ho scritto su questo argomento:

Aumento di InstallShield tramite XML di Windows Installer - Servizi di Windows

Fondamentalmente crei un modulo di unione utilizzando WiX per incapsulare il servizio e quindi aggiungilo al tuo progetto installshield. (Assicurati di associarlo alla directory INSTALLDIR per assicurarti che il tuo file vada dove ti aspetti). Crea e testa su una VM. Pezzo di torta.


Un'altra tecnologia da imparare? Fino a ieri non avevo sentito parlare di WIX. Ancora non ne so niente. Sembra che l'intero processo stia diventando sempre più difficile per qualcosa che richiedeva solo pochi clic.
fizch

Ci vogliono solo pochi clic per RUN un programma di installazione. La loro creazione è sempre stata molto più impegnativa.
Christopher Painter

Inoltre ci sono voluti solo pochi clic per configurare il programma di installazione. Devi digitare il titolo, il produttore e così via, ma non devi creare un intero documento xml. Cosa puoi dirmi di WIX? Posso dire che ovviamente ne sai molto. Che cos'è? Dove lo trovo? Come lo uso? Ecc ...
fizch

Scrivo installatori da 16 anni e solo installazioni semplici con un singolo EXE e scorciatoia mi richiedono "solo pochi clic" per creare. In ogni caso puoi trovare WiX su CodePlex e c'è un libro pubblicato sull'argomento. La tecnologia sottostante è Windows Installer e tale documentazione può essere trovata in Platform SDK e su MSDN.
Christopher Painter

5
Scherzi a parte "c'è un libro pubblicato sull'argomento ... documenti in SDK". ?? Chris, stiamo solo cercando di migrare le nostre soluzioni 2010 al 2012 e l'installazione / configurazione ci sta fermando sulle nostre tracce. MS, riporta VS Setup / Installer visualstudio.uservoice.com/forums/121579-visual-studio/…
JimSTAT


2

Ho appena avuto dei problemi a trovare dove aggiungere il programma di installazione come indicato nella risposta. Quindi ecco come.

Fare doppio clic sulla classe del servizio all'interno del progetto del servizio Windows Una schermata vuota con il testo "Per aggiungere componenti alla classe, trascinarli dalla casella degli strumenti e utilizzare la finestra Proprietà per impostare le loro proprietà ..." Fare clic con il tasto destro ovunque tranne che sui collegamenti e seleziona "Aggiungi programma di installazione"

ci vediamo


0

Tieni presente che tutta la spiegazione di cui sopra non ti aiuterà se prevedi di creare in seguito un aggiornamento di quella configurazione. InstallShiled LE non può interrompere il servizio in esecuzione durante l'aggiornamento. Non puoi farlo neanche da Windows Service Installer -> BeforeInstall evento.


0

Volevo metterlo qui;

Su VS 2015, durante questa operazione, mi sono imbattuto ripetutamente nell'errore 1001 durante l'installazione.

La risposta su questa pagina ha spiegato che sulle versioni più recenti (qualsiasi cosa dopo il 2012) , apparentemente è necessario lasciare esplicitamente l' opzione della classe di installazione deselezionata , quindi aggiungere il servizio Windows nella sezione Servizi al passaggio 3 del progetto di installazione:

Errore 1001 durante l'installazione del servizio Windows personalizzato

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.