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

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 sums obligés d’utiliser le logiciel InstallShield LE (édition limitée). Le problème ici est que j’écris une tonne de services Windows et que je ne vois pas comment configurer InstallShield LE. Il semble que nous (mon entreprise) devons investir dans des licences pour l’édition professionnelle.

Quelqu’un at-il trouvé un moyen d’installer des services dans InstallShield LE? Lorsque vous utilisez le projet Windows Installer, vous venez de définir les actions personnalisées.

J’ai récemment installé VS 2012 avec Install Shield LE. Au début, je continuais à recevoir une erreur de serveur interne ISEXP -5036 après une génération (c’était après la configuration d’un projet ISLE et l’exécution via 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, là où il échouait. Pour une raison quelconque, la création de la solution à partir de rien reconnaît en quelque sorte que seuls les types de média CD_ROM et SingleImage fonctionnent.

Quoi qu’il en soit, pour corriger l’erreur 5036, cliquez sur l’onglet Générer 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é dans la configuration DVD-5. Changez ceci en CD_ROM et cliquez sur Fermer. Une fois que vous aurez construit / reconstruit, il ne comportera aucune erreur IS 5036.

entrer la description de l'image ici

Lorsque la case à cocher de la classe du programme 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 sur la façon de résoudre ce problème:

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

Cette erreur se produira si le composant qui installe un service .NET n’est pas configuré correctement avec «Classe de programme d’installation .NET» définie sur Oui. La méthode pour installer un service .NET consiste à utiliser la vue Component \ Advanced Settings \ Services, pas le paramètre “.NET Installer Class”. La définition de définitions dans la vue Component \ Advanced Settings \ Services crée des entrées dans les tables Windows Installer ServiceControl et ServiceInstall. Ces entrées sont utilisées par l’action “InstallServices” de Windows Installer pour installer le service.

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

Pour qu’il fonctionne avec InstallShield, vous devez vous rendre dans l’arborescence “files” d’InstallShield et cliquer avec le bouton 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

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 pénible.
  3. les options de configuration sont confuses et trop complexes.
  4. la solution acceptée sur ce thread est un hack et cela ne fonctionne pas toujours – voir 1001 dans la documentation – vous devez essentiellement passer par le paywall pour obtenir les bonnes options de configuration pour installer un service Windows.

Solution pour moi comme mentionné ailleurs – était d’abandonner InstallShield

entrer la description de l'image ici

Très facile à partir de là.

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

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

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

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

Mon expérience avec Installationsheild LE est que c’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 à Microsoft beaucoup d’argent pour Visual Studio, puis leur partenaire (en tant que délinquant) pour Installheild. Mauvaise stratégie qui n’a pas fonctionné puisqu’ils ont dû ramener les projets d’installation dans VS 2013.

J’ai écrit à 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 l’append à votre projet installshield. (Assurez-vous de vous associer au répertoire INSTALLDIR pour vous assurer que votre fichier est à la hauteur de vos attentes). Construire et tester sur une VM. Part de gâteau.

J’utilise VS2012 et Installshield LE Spring Edition. Je n’ai pas eu à utiliser Wix.

Si vous rencontrez l’erreur “Impossible de créer _isconfig.xml pour une utilisation avec InstallUtilLib.dll”, créez un dossier portant le même nom que votre projet d’installation et dans le dossier du projet d’installation.

Crédits sur http://community.flexerasoftware.com/showthread.php?165929-Could-not-create-_isconfig-xml-for-use-with-InstallUtilLib-dll

Je viens de rencontrer quelques problèmes pour trouver l’ajout du programme d’installation comme indiqué dans la réponse. Alors voilà comment.

Double-cliquez sur votre classe de service dans votre service Windows Projet Un écran vide avec le texte “Pour append 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 et sélectionnez “Ajouter un installateur”

à plus

Gardez à l’esprit que toutes les explications ci-dessus ne vous aideront pas si vous envisagez de créer ultérieurement une mise à niveau de cette configuration. InstallShiled LE ne peut pas arrêter le service en cours lors de la mise à niveau. Vous ne pouvez pas le faire non plus à partir de Windows Service Installer -> Evénement BeforeInstall.

Je voulais mettre ça ici;

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

La réponse sur cette page explique que sur les versions les plus récentes (2012) , vous devez apparemment laisser l’option de classe installateur non cochée , puis append votre service Windows dans la section Services de l’étape 3 du projet d’installateur:

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