web-dev-qa-db-fra.com

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

J'ai écrit un service Windows fonctionnant sous Framework 4.0 et sous VS 2015 . J'ai également créé un projet d'installation (version Installshield gratuite).

Mon service ne s'affichait pas sous services.msc après l'avoir installé. Par conséquent, selon d'autres publications, je devais marquer la sortie principale dans InstallShield en tant que "classe d'installation", mais je reçois alors l'erreur 1001 lors de l'exécution du programme d'installation. EXE.

Ce post indique que "Le code d'erreur 1001 ALWAYS signifie toujours un échec de l'action personnalisée de la classe Installer." et que je ne devrais pas utiliser des actions personnalisées. Je n'utilise aucune action personnalisée pour le moment. 

La plupart des solutions sur ce site contiennent des instructions pour Installshield 2010 et les étapes ne fonctionnent pas pour 2015.

L'erreur apparaît à la fois sur ma machine de développement et sur toutes les machines clientes ... Des suggestions?

MODIFIER:

L'observateur d'événements affiche "Échec de la création du point de restauration (Processus = C:\Windows\system32\msiexec.exe/V; Description = Nom de mon application installé; erreur = 0x80070422).

20
Cameron Castillo

J'ai trouvé quelque chose pour éliminer le problème, mais cela crée une nouvelle question, bien que beaucoup plus simple et moins critique.

La cause de mon problème est que j'ai dû supprimer le code suivant de AfterInstall de mon ServiceInstaller:

new ServiceController(ServiceInstaller.ServiceName).Start();

Cela a été ajouté pour démarrer automatiquement mon service une fois qu'il a été installé. Pour l'instant, je vais simplement démarrer le service manuellement.

0
Cameron Castillo

J'ai eu exactement ce même problème. Soudainement, après la mise à niveau vers VisualStudio 2013 et le plus récent InstallShield LE et la construction de mes packages d'installation, ils échouaient avec l'erreur 1001 cryptique.

Réponse définitive

J'ai trouvé la réponse définitive. La case à cocher "classe d'installation" ne peut plus être sélectionnée dans InstallShieldLE. Vous devez décocher cet élément.

Pour ouvrir cette boîte de dialogue, accédez à Spécifier les données d'application> Fichiers, cliquez avec le bouton droit de la souris sur votre sortie principale et sélectionnez Propriétés.

 uncheck Installer Class

Auparavant, vous deviez le sélectionner: maintenant, il ne doit pas être sélectionné

Auparavant (Visual Studio 2012 et avant, vous deviez sélectionner cet élément ou l'installation du service serait échouer. C'est terrible.

Maintenant, vous devez aller à l’arbre suivant dans le projet InstallShield LE et double-cliquer sur le nœud Services:  services node

Après cela, l'élément Services apparaît à gauche (ai-je déjà mentionné ce qu'est une terrible UX et UI?) Et faites un clic droit dessus pour pouvoir ajouter le service.

 add service

Choisissez l'élément de menu qui apparaît pour ajouter le service et vous obtiendrez un formulaire vous permettant de configurer les détails du programme d'installation. 

 installation details

Une fois que vous faites cela et reconstruisez votre MSI fonctionnera et cela résoudra l’erreur 1001. 

C’était une perte de temps terrible que les développeurs InstallShield d’origine auraient pu résoudre. Malheureux.

38
raddevus

Si .NET 4.6 est installé sur votre machine de génération, vous aurez besoin de la version 2015 de l'édition limitée pour éviter tout problème de contrôle de version lié à la prise en charge par InstallShield des classes d'installation. (Une erreur 1001 ayant de nombreuses causes, il ne s'agit pas d'un correctif garanti.) Notez que InstallShield 2015 Limited Edition ne prend pas en charge l'édition communautaire de Visual Studio.

7
Michael Urman

J'espère que cela aidera certains d'entre vous à rencontrer l'erreur 1001 lors de la tentative d'installation d'un service .NET Windows à l'aide du projet d'installation InstallShield 2015 LE avec la sortie principale définie en tant que programme d'installation. 

C'est un bogue connu lorsque .NET 4.6 est installé sur Windows 10.

https://flexeracommunity.force.com/customer/articles/en_US/ISSUE/HOTFIX-Install-Fails-With-Error-1001-When-a-NET-Installer-Class-Component-is-Present-in- InstallShield-2015-SP1

3
Warren R

Comme je ne peux pas encore commenter, je ne ferai que répondre avec une réponse à votre propre réponse acceptée. Je sais que cela fait un moment que vous avez posé la question, mais voici.

Si vous souhaitez démarrer automatiquement après l'installation, vous pouvez passer à l'étape 3. Configurez le système cible. Choisissez l'onglet Services. Cliquez avec le bouton droit sur Services et ajoutez un service. Vous devriez pouvoir localiser n’importe quel service dans votre sortie principale. Une fois ajouté, vous pouvez sélectionner différents paramètres liés au démarrage automatique, etc. J'espère que ça vous aide.

Sur une note de côté, je cherche toujours la réponse à mon 1001.

1
LuqJensen

Après quelques recherches, j'ai découvert que le programme d'installation échouait avec cette erreur lorsqu'il tentait de supprimer le service (associé à ce que vous installiez) - AND (le service) n'est plus disponible . Mon scénario d'utilisation - Démarrer l'installation à partir de MVS2015 d’une solution complexe comprenant également un service Windows . Lorsque vous modifiez la version de la solution, le programme d’installation s’arrête pour constater que votre application a déjà été installée et ne peut pas la désinstaller car il s’agit d’une version différente. Il ouvre une boîte de dialogue indiquant cela et se ferme ... MAIS IL A DÉSINSTALLÉ le service . Essayer d'installer ou de désinstaller échoue maintenant avec l'erreur 1001 car Windows ne trouve pas le service pour le désinstaller.

Si quelqu'un a une meilleure solution, postez-la, mais ma solution consiste à utiliser l'utilitaire de ligne de commande sc. sc est un utilitaire qui peut être utilisé pour manipuler des services à partir de la ligne de commande (tapez sc pour obtenir de l'aide). Donc, j'utilise sc pour ajouter le service (par nom), puis je peux désinstaller ou installer comme d'habitude. Est obligatoire d'avoir un chemin d'accès bin valide dans la commande - mais TOUT chemin d'accès valide sera accepté. 

sc <server> create [service name] [binPath= ] <option1> <option2>...

Exemple:

sc create MyService binPath= C:\Windows\Explorer.exe
[SC] CreateService SUCCESS
0
Gogu CelMare

J'utilise VS 2012 avec InstallShield LE 2015 en ciblant .NET 4.5 et je dois décocher la "classe d'installation" pour que cela fonctionne. 

0
kmxr

Cette erreur se produit lorsque le framework .NET ciblé n'est pas installé. 

Si vous ciblez le même ordinateur de développement, veuillez vérifier si ce service (EXE) est déjà en cours d'exécution sur cet ordinateur (il ne devrait pas fonctionner).

0
Ajit Medhekar