Comment créer un projet InstallShield LE pour installer un service Windows?


104

J'ai téléchargé Visual Studio 2012 hier lors de sa sortie sur MSDN. J'ai remarqué que certains des types de projets que nous avions en 2010 ont disparu ou sont différents. La plus grande différence pour moi en ce moment est la suppression du projet Windows Installer. Maintenant, nous sommes obligés d'utiliser InstallShield LE (Limited Edition). Le problème ici est que j'écris une tonne de services Windows et je ne vois pas comment configurer InstallShield LE. Il semble que nous (mon entreprise) devrons investir dans des licences pour l'édition professionnelle.

Quelqu'un a-t-il trouvé un moyen d'installer des services dans InstallShield LE? Lorsque vous utilisez le projet Windows Installer, vous définissez simplement les actions personnalisées.


1
L'utilisation d'actions personnalisées InstallUtil dans les projets de déploiement Visual Studio était en fait une très mauvaise pratique. Il s'agit essentiellement de réinventer la roue avec une solution fragile car l'outil de création sous-jacent n'a pas exposé les capacités natives de MSI.
Christopher Painter

Réponses:


161

Pour Visual Studio 2012 et InstallShield LE, procédez comme suit:

  • Exécutez l'assistant de projet InstallShield et ajoutez la sortie principale de votre service à la section Fichiers d'application.
  • Une fois que vous avez terminé avec l'assistant de projet, double-cliquez sur l'élément "Fichiers" sous la deuxième étape du projet d'installation.

Section Fichiers

  • Cliquez avec le bouton droit sur la sortie principale de votre service et accédez aux propriétés.
  • Cliquez sur l'onglet "Paramètres COM et .NET" et cochez la case "Classe d'installation". entrez la description de l'image ici
  • Cliquez sur OK

Désormais, une fois que vous avez créé et exécuté votre installation, votre service apparaîtra dans le composant logiciel enfichable Windows Services.

Notez que cela suppose que vous ayez ajouté un «programme d'installation de projet» à votre projet de service (cliquez avec le bouton droit sur la feuille de conception de service et cliquez sur «ajouter un programme d'installation»). Je peux confirmer ce travail sur Windows 8 avec Visual Studio 2012 / InstallShield LE.


Ok, cela fonctionne également dans VS 2010 et Win 7 Pro. Je n'ai pas encore essayé dans VS 2012, mais cela devrait le faire. Merci.
fizch

3
Est-il possible d'avoir une boîte de dialogue demandant à l'utilisateur la chaîne de connexion à la base de données (serveur, authentification et nom de la base de données) et mettre à jour le fichier de configuration du service Windows à l'aide d'InstallShield LE?
Adelia Benalius

2
C'est un très bon guide: c-sharpcorner.com/uploadfile/cb88b2/… .
Jonty

1
Projet d'installation de Visual Studio dans VS 2013. Téléchargement: visualstudiogallery.msdn.microsoft.com /... Voix de l' utilisateur: visualstudio.uservoice.com/forums/121579-visual-studio / ... Référence: blogs.msdn.com/b/visualstudio/archive /
2014/04/17

1
Cette option ne démarre pas le service après l'installation. Pour installer le service et le démarrer, dans l'explorateur de solutions, sélectionnez 3. Configurer le système cible> Services .
Rajeev

24

J'ai récemment installé VS 2012 avec Install Shield LE. Au début, j'ai continué à recevoir une erreur de serveur interne ISEXP -5036 après une construction (c'était après la configuration d'un projet ISLE et l'exécution de l'assistant de projet Install Shield). Finalement, j'ai découvert qu'il essayait de créer le MSI dans le type de support DVD-5, où il échouait. Pour une raison quelconque, la création de la solution à nouveau à partir de zéro reconnaît en quelque sorte la construction uniquement vers les types de supports CD_ROM et SingleImage qui fonctionnent.

Quoi qu'il en soit, pour corriger l'erreur 5036, cliquez sur l'onglet Build dans VS 2012 (menu du haut), sélectionnez le gestionnaire de configuration et vous devriez voir que votre fichier d'installation IS est sélectionné sur la configuration du DVD-5. Remplacez-le par CD_ROM et cliquez sur Fermer. Une fois que vous avez construit / reconstruit, il se terminera sans erreur IS 5036.

entrez la description de l'image ici


2
Cela n'a peut-être rien à voir avec son problème, mais cela a résolu le mien. Je vous remercie! +1
David

Même problème pour moi dès le début, l'installation par défaut avait DVD-5 comme configuration et l'installation n'a pas pu être construite. Avec votre astuce, je l'ai changé en image unique et construit sans problème!
Nick Bork

Le DVD-5 a été sélectionné. Réponse simple mais excellente
beaumondo

6

Lorsque la case à cocher de la classe d'installation peut fonctionner pour certaines instances, vous pouvez rencontrer l'erreur suivante:

Erreur 1001.Le service spécifié existe déjà

Voici un extrait de ce lien expliquant comment résoudre ce problème:

Pour l'erreur: erreur 1001. Le service spécifié existe déjà

Cette erreur se produit si le composant installant un service .NET est configuré de manière incorrecte avec «Classe d'installation .NET» définie sur Oui. La méthode pour installer un service .NET consiste à utiliser la vue Component \ Advanced Settings \ Services, et non le paramètre «.NET Installer Class». La création de définitions dans la vue Component \ Advanced Settings \ Services crée des entrées dans les tables ServiceControl et ServiceInstall de Windows Installer. Ces entrées sont utilisées par l'action «InstallServices» de Windows Installer pour installer le service.


pourriez-vous aider et expliquer ceci ... Vous pouvez trouver la vue Component \ Advanced Settings \ Services "??
pithhelmet

c'est dans la première édition de l'installateur (ffs! microsoft pourquoi avez-vous pris le type de projet d'installation!) .. Si vous avez la première édition. community.flexerasoftware.com/…
Paul Hutchinson

J'ai trouvé que cela était lié à la longueur du nom du projet d'installation, c'est-à-dire changer le nom de votre projet d'installation en quelque chose de plus court comme "Install" ou "Setup".
Jonty

4

Si votre projet est .NET, essayez, vous pouvez utiliser la classe ServiceProcessInstaller avec InstallShield LE.

Pour le faire fonctionner avec InstallShield, vous devez aller dans l'arborescence "fichiers" InstallShield et faire un clic droit sur votre fichier. Cochez ensuite la case "Classe d'installation" dans l'onglet "Paramètres COM et .NET".

Je l'ai fait fonctionner, mais j'ai eu des problèmes sur certains systèmes d'exploitation comme Windows 2008R2. Votre kilométrage peut varier.

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


1
Désolé. Je n'ai pas vu cela jusqu'à aujourd'hui. Il semble que ce soit à peu près la même réponse que celle que j'ai acceptée. Je vais attribuer +1.
fizch

4

J'ai eu toutes sortes de problèmes avec ça.

Comme suit.

  1. InstallShield prend des années à télécharger
  2. le processus d'enregistrement est une douleur.
  3. les options de configuration sont déroutantes et trop complexes.
  4. la solution acceptée sur ce fil est un hack et cela ne fonctionne pas toujours - voir 1001 dans la documentation - essentiellement vous devez passer par le paywall pour obtenir les bonnes options de configuration pour installer un service Windows.

La solution pour moi, comme mentionné ailleurs - était d'abandonner InstallShield

entrez la description de l'image ici

Très facile à partir de là.

Edit: Update - installez la dernière version à partir d'ici https://wix.codeplex.com/releases/view/115492 pour vs 2013/2015


3

Les projets d'installation de Visual Studio sont de retour dans VS 2013 en tant qu'extension de Visual Studio.

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

Veuillez mettre à jour votre solution et vos projets vers VS 2013. Si vous êtes toujours dans VS 2010, vous feriez probablement mieux de passer directement à VS 2013.

Mon expérience avec Installsheild LE est qu'il est très original, mais une fois que vous avez compris les astuces, il est plus facile à utiliser. Cependant, je pense que l'édition limitée est un moyen pour Microsoft et Flexera de vendre l'édition complète. En d'autres termes, nous payons d'abord beaucoup d'argent à Microsoft pour Visual Studio, puis à leur partenaire (dans le crime) davantage pour Installsheild. Mauvaise stratégie qui n'a pas fonctionné car ils ont dû ramener les projets d'installation dans VS 2013.


2

J'ai écrit sur ce sujet:

Augmenter InstallShield à l'aide de Windows Installer XML - Services Windows

Fondamentalement, vous créez un module de fusion à l'aide de WiX pour encapsuler le service, puis vous l'ajoutez à votre projet installshield. (Assurez-vous de l'associer au répertoire INSTALLDIR pour vous assurer que votre fichier va là où vous le souhaitez). Construisez et testez sur une machine virtuelle. Part de gâteau.


Une autre technologie à apprendre? Jusqu'à hier, je n'avais pas entendu parler de WIX. Je n'en sais toujours rien. Il semble que tout ce processus devient de plus en plus difficile pour quelque chose qui ne prenait que quelques clics.
fizch

Il suffit de quelques clics pour exécuter un programme d'installation. Leur création a toujours été beaucoup plus difficile.
Christopher Painter

Il n'a également fallu que quelques clics pour configurer le programme d'installation. Vous devez taper le titre, le fabricant, etc., mais vous n'avez pas à créer un document xml entier. Que pouvez-vous me dire sur WIX? Je peux dire que vous en savez évidemment beaucoup à ce sujet. Qu'Est-ce que c'est? Où puis-je l'obtenir? Comment l'utiliser? Etc ...
fizch

J'écris des installateurs depuis 16 ans et seules des installations simples avec un seul EXE et un seul raccourci me permettent de créer en quelques clics. Quoi qu'il en soit, vous pouvez trouver WiX sur CodePlex et il y a un livre publié sur le sujet. La technologie sous-jacente est Windows Installer et cette documentation se trouve dans le Kit de développement Platform SDK et sur MSDN.
Christopher Painter

5
Sérieusement "il y a un livre publié sur le sujet ... docs sur dans le SDK". ?? Chris, nous essayons juste de migrer nos solutions 2010 vers 2012 et l'installation / la configuration nous stoppe dans nos voies. MS, ramenez VS Setup / Installer visualstudio.uservoice.com/forums/121579-visual-studio
JimSTAT


2

J'ai juste des problèmes pour trouver où ajouter le programme d'installation comme indiqué dans la réponse. Alors voici comment.

Double-cliquez sur votre classe de service dans votre projet de service Windows Un écran vide avec le texte "Pour ajouter des composants à votre classe, faites-les glisser depuis la boîte à outils et utilisez la fenêtre Propriétés pour définir leurs propriétés ..." Cliquez avec le bouton droit n'importe où sauf sur les liens et sélectionnez "Ajouter un installateur"

à plus


0

Gardez à l'esprit que toutes les explications ci-dessus ne vous aideront pas si vous prévoyez de créer ultérieurement une mise à niveau de cette configuration. InstallShiled LE ne peut pas arrêter le service en cours d'exécution lors de la mise à niveau. Vous ne pouvez pas non plus le faire à partir du programme d'installation du service Windows -> événement BeforeInstall.


0

Je voulais mettre ceci ici;

Sur VS 2015, en faisant cela, j'ai rencontré l'erreur 1001 lors de l'installation à plusieurs reprises.

La réponse sur cette page a expliqué que sur les versions plus récentes (tout ce qui a été postérieur à 2012) , apparemment, vous devez explicitement laisser l' option de classe d'installation décochée , puis ajouter votre service Windows dans la section Services de l'étape 3 du projet d'installation:

Erreur 1001 lors de l'installation du service Windows personnalisé

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.