J'ai créé un service de fenêtre très simple en utilisant Visual Studio 2010 et .N ُ ET 4.0.
Ce service n'a aucune fonctionnalité ajoutée à partir du projet de service Windows par défaut, autre qu'un programme d'installation a été ajouté.
Si j'exécute "installutil.exe appName.exe" sur ma boîte de développement ou sur d'autres machines Windows 2008 R2 de notre domaine, le service Windows s'installe sans problème.
Lorsque j'essaie de faire la même chose sur notre site client, l'installation échoue avec l'erreur suivante.
Microsoft (R) .NET Framework Installation utility Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Exception occurred while initializing the installation:
System.IO.FileLoadException: Could not load file or Assembly 'file:///C:\TestService\WindowsService1.exe' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515).
Cette solution n'a qu'un seul projet et aucune dépendance ajoutée.
Je l'ai essayé sur plusieurs machines dans notre environnement et deux chez nos clients. Les machines sont toutes des fenêtres 2008 R2, toutes deux de nouvelles installations. Une machine n'a que .net 2.0 et .net 4.0. L'autre .net 2, 3, 3.5 et 4.
Je suis un administrateur local sur chacune des machines.
J'ai également essayé l'installateur 64 bits mais j'obtiens l'erreur suivante, donc je pense que celui 32 bits est celui à utiliser. System.BadImageFormatException
Tout conseil serait apprécié. Merci.
Une autre raison de cette erreur peut être que vous avez copié votre programme à partir d'une source que Windows considère comme non fiable. Vous pouvez débloquer l'assemblage en cliquant sur "débloquer" après avoir cliqué avec le bouton droit et sélectionné les propriétés du fichier.
Besoin de débloquer les fichiers. ou du moins c'est ce qui a corrigé le mien.
Pour débloquer en bloc dans Powershell
get-childitem *.* | Unblock-File
ou sous DOS:
FOR %a in (*.*) do (echo.>%a:Zone.Identifier)
Ce problème est survenu pour moi car j'essayais d'installer le service à partir d'un emplacement réseau. En copiant le service.exe sur la machine locale avant d'utiliser installutil, il a résolu mon problème et le service a été installé avec succès.
Lorsque nous copions l'exécutable à partir d'un autre ordinateur, Windows marque un drapeau sur eux pour la protection. Clic droit sur l'exécutable et dans les propriétés Cliquez Débloquer. Il effacerait l'indicateur et l'exécutable du service s'installerait.
n'oubliez pas de voter ... Essayez le SC comme suit: 1. ouvrez la ligne de commande 2. écrivez le sc ci-dessous créer ServiceName BinPath = "ExePath". rapport sur les résultats .. .
J'ai également fait face au même problème. Dans mon cas, je déployais une nouvelle version d'utilitaires, j'ai copié de nouveaux fichiers exe, installog, puis j'ai essayé de désinstaller les utilitaires.
J'ai copié l'ancienne version, désinstallez les utilitaires, copié la nouvelle version et l'ai réinstallée. Quoi qu'il en soit, c'est la séquence logique que j'aurais dû suivre en premier lieu.
vous pouvez utiliser cette commande dans la commande développeur Prompt run administrator
installutil C:\...\MyService\bin\Debug\MyService.exe
j'ai ce problème et pour différent entre la version .net de l'util et mon service
J'utilise util pour .net 2 et ma version de service avec .net4
Selon la réponse de @ doublehelix ci-dessus, cette réponse m'a mis sur la bonne voie pour mon problème particulier lié à un problème de service exécuté dans Windows XP (Débloquer n'est pas une option dans l'onglet de sécurité que j'ai pu trouver) Dans mon cas, j'essayais d'exécuter un service à partir d'un lecteur distinct (c'est-à-dire pas sur le même lecteur que Windows et pas sous les fichiers programme) bien que le disque physique réel soit le même. Le déplacement de mon service dans le dossier Program Files a résolu mon problème. problème sous-jacent (j'avais l'intention de 'commenter' contre la réponse de @ doublehelix mais je ne semble pas pouvoir le faire dans mon état actuel).
Dans mon cas, cette erreur a été causée par la transmission accidentelle du répertoire contenant le service à InstallUtil au lieu de passer le service exe.
De toute évidence une erreur humaine, mais j'ai trouvé le message d'erreur assez trompeur.