103 votes

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

J'ai téléchargé Visual Studio 2012 hier lorsqu'il a été publié 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 actuellement est la suppression du projet Windows Installer. Nous sommes maintenant obligés d'utiliser InstallShield LE (Limited Edition). Le problème est que j'écris une tonne de services Windows et je ne vois pas comment configurer InstallShield LE. Il semble que nous (ma société) devions 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, il vous suffit de définir les actions personnalisées.

1 votes

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

161voto

Mongo Points 1857

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

  • Exécutez l'assistant de projet InstallShield et ajoutez la sortie primaire 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 l'étape deux du projet de configuration.

Files section

  • Cliquez avec le bouton droit de la souris sur la sortie primaire de votre service, et allez dans les propriétés.
  • Cliquez sur l'onglet "COM and .NET Settings" et cochez la case "Installer Class". enter image description here
  • Cliquez sur Ok

Maintenant, une fois que vous avez construit et exécuté votre installation, votre service apparaîtra dans le snap-in des services Windows.

Notez que cela suppose que vous avez ajouté un "Project Installer" à votre projet de service (clic droit sur la feuille de conception du service et cliquez sur "add installer"). Je peux confirmer que cela fonctionne sous Windows 8 avec Visual Studio 2012 / InstallShield LE.

0 votes

Ok, cela fonctionne également dans VS 2010 et Win 7 Pro. Je dois encore l'essayer dans VS 2012, mais cela devrait le faire. Merci.

3 votes

Est-il possible d'avoir un 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 de mettre à jour le fichier de configuration du service Windows en utilisant InstallShield LE ?

2 votes

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

24voto

Jonty Points 370

J'ai récemment installé VS 2012 avec Install Shield LE. Au début, je n'arrêtais pas de recevoir une erreur de serveur interne ISEXP -5036 après une construction (c'était après avoir configuré un projet ISLE et exécuté l'assistant de projet Install Shield). Finalement, j'ai découvert qu'il essayait de créer le MSI dans le type de média DVD-5, ce qui était la cause de l'échec. Pour une raison quelconque, la création de la solution à nouveau à partir de zéro reconnaît en quelque sorte de construire uniquement aux types de médias CD_ROM et SingleImage qui fonctionne.

Quoi qu'il en soit, pour corriger l'erreur 5036, cliquez sur l'onglet Build dans VS 2012 (menu supérieur), sélectionnez le gestionnaire de configuration et vous devriez voir que votre fichier de configuration IS est sélectionné sur la configuration DVD-5. Changez cela en CD_ROM et cliquez sur fermer. Une fois que vous aurez construit/reconstruit, il se terminera sans l'erreur 5036 IS.

enter image description here

2 votes

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

0 votes

Même problème pour moi dès le début, l'installation par défaut avait le DVD-5 comme configuration et le setup n'a pas réussi à se construire. Grâce à votre conseil, j'ai changé la configuration pour une image unique et l'installation s'est faite sans problème !

0 votes

Le DVD-5 a été sélectionné. Une réponse simple mais géniale

6voto

ElHaix Points 4261

Bien que l'utilisation de la case à cocher de la classe d'installation puisse fonctionner dans certains cas, vous pouvez rencontrer l'erreur suivante :

Erreur 1001 : le service spécifié existe déjà

En voici un extrait lien sur la façon de résoudre ce problème :

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

Cette erreur se produit si le composant qui installe un service .NET est incorrectement configuré avec la valeur " .NET Installer Class " définie sur Oui. La méthode méthode d'installation d'un service .NET consiste à utiliser le composant \Advanced Paramètres \Services et non le paramètre " .NET Installer Class ". Création de définitions dans le composant \Advanced Paramètres \Services voir crée des entrées dans les tables ServiceControl et ServiceInstall de Windows Installer. ServiceInstall Tables. Ces entrées sont utilisées par le programme Windows Installer "InstallServices" pour installer le service.

0 votes

Pourriez-vous m'aider et m'expliquer ceci.... Composant \Advanced Paramètres \Services On peut trouver la vue " ?

0 votes

C'est dans l'édition première de l'installateur (ffs ! microsoft pourquoi avez-vous enlevé le type de projet d'installation !) Si vous avez l'édition première. community.flexerasoftware.com/

0 votes

J'ai découvert que c'est lié à la longueur du nom du projet d'installation, c'est-à-dire que vous devez changer le nom de votre projet d'installation pour quelque chose de plus court comme "Install" ou "Setup".

4voto

jm. Points 7092

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

Pour qu'il fonctionne avec InstallShield, vous devez aller dans l'arbre des " fichiers " d'InstallShield et faire un clic droit sur votre fichier. Cochez ensuite la case " Installer class " dans l'onglet " COM and .NET settings ".

J'ai réussi à le faire fonctionner, mais j'ai eu des problèmes avec 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 votes

Désolé. Je n'ai vu cela qu'aujourd'hui. Il semble que ce soit à peu près la même réponse que celle que j'ai acceptée. Je vais l'ajouter.

4voto

Paul Hutchinson Points 455

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

Comme suit.

  1. Le téléchargement d'InstallShield prend du temps
  2. le processus d'enregistrement est une douleur.
  3. les options de configuration sont confuses et excessivement complexes.
  4. la solution acceptée sur ce fil de discussion est un hack et elle ne fonctionne pas toujours - voir 1001 dans la documentation - essentiellement vous devez passer le paywall pour obtenir les bonnes options de configuration pour installer un service Windows.

La solution pour moi, comme mentionné ailleurs, a été d'abandonner InstallShield.

enter image description here

Très facile à partir de ce point.

Edit : Update - installer la dernière version depuis ici https://wix.codeplex.com/releases/view/115492 pour vs 2013 / 2015

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X