J'essaie d'installer un projet de service Windows C # à l'aide d'un projet de déploiement VisualStudio.Net.
Pour exécuter le projet de déploiement, je clique avec le bouton droit de la souris et sélectionne "installer" dans le menu contextuel, l'assistant d'installation s'exécute et m'invite finalement avec une boîte de dialogue "Définir la connexion au service" qui demande le nom d'utilisateur et le mot de passe.
Lorsque j'installe un service à l'aide de l'utilitaire sc à partir de la ligne de commande, je n'ai pas à fournir d'informations d'identification.
Dois-je créer un identifiant juste pour ce service? Je préfère utiliser "Système local" ou "Service réseau" (je ne sais pas quelle est la différence) comme le font d'autres services.
Ajoutez ce code à votre méthode void InitializeComponent()
privée dans projectInstaller.Designer.cs
fichier dans votre projet de service Windows.
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
si la définition de votre installateur de processus est:
private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
Vérifiez ce lien: http://msdn.Microsoft.com/en-us/library/zt39148a (v = vs.110) .aspx
Faites attention à cette section: Pour créer les installateurs pour votre service
Modifiez votre ServiceProcessInstaller:
Dans le concepteur, cliquez sur ServiceProcessInstaller1 pour un projet Visual Basic ou serviceProcessInstaller1 pour un projet Visual C #. Définissez la propriété Account sur LocalSystem. Cela entraînera l'installation du service et son exécution sur un compte de service local.
Dans le projet qui contient le service, ajoutez une classe Installer. Faites-le ressembler à ceci:
[RunInstaller(true)]
public class MyServiceInstaller : Installer
{
public MyServiceInstaller()
{
ServiceProcessInstaller serviceProcessInstaller = new ServiceProcessInstaller();
serviceProcessInstaller.Account = ServiceAccount.LocalSystem; // Or whatever account you want
var serviceInstaller = new ServiceInstaller
{
DisplayName = "Insert the display name here",
StartType = ServiceStartMode.Automatic, // Or whatever startup type you want
Description = "Insert a description for your service here",
ServiceName = "Insert the service name here"
};
Installers.Add(_serviceProcessInstaller);
Installers.Add(serviceInstaller);
}
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
// This will automatically start your service upon completion of the installation.
try
{
var serviceController = new ServiceController("Insert the service name here");
serviceController.Start();
}
catch
{
MessageBox.Show(
"Insert a message stating that the service couldn't be started, and that the user will have to do it manually");
}
}
}
Ensuite, dans l'Explorateur de solutions, faites un clic droit sur le projet de déploiement et sélectionnez "Affichage> Actions personnalisées". Cliquez avec le bouton droit sur Actions personnalisées et sélectionnez "Ajouter une action personnalisée ..." Choisissez le dossier d'application et sélectionnez la sortie principale du projet qui contient le service. Désormais, les actions personnalisées (Commit
ci-dessus) seront exécutées lors de l'installation. Vous pouvez ajouter les méthodes supplémentaires (Install
, Rollback
, Uninstall
) si vous avez besoin d'autres actions personnalisées.
Pour plus de détails sur les différents comptes et leurs privilèges, consultez le lien suivant:
http://msdn.Microsoft.com/en-us/library/system.serviceprocess.serviceaccount.aspx