2009-07-17 6 views
3

J'ai une application qui est un service Windows pas si simple (C#). J'ai créé un programme d'installation en utilisant Visual Studio 2008, qui a fait le travail d'installation du service sur les clients machine, mais en utilisant le projet de déploiement Visual Studio a 2 inconvénients:Programme d'installation WiX et actions personnalisées

  1. Je ne peux pas sembler obtenir le programme d'installation de construire en utilisant MSBuild (j'ai essayé la méthode DevEnv.exe). Le service est un petit morceau d'un projet beaucoup plus grand, et j'aimerais que la construction du fichier MSI se fasse en même temps que mon build. J'ai utilisé WiX pour les autres installateurs, mais cette application particulière nécessite une étape de configuration dans la configuration.
  2. Il semble y avoir un bogue dans le projet de déploiement de VS 2008 lors de l'installation des services Windows. En réparation et mise à niveau, le service n'est jamais arrêté. (Causée par une séquence non valide pour RemoveExistingProducts - j'ai travaillé autour en changeant la séquence à 1525)

Ce qui est bien sur le projet de déploiement de VS2008 est que j'ai créé une action personnalisée qui montre une forme qui obtient quelques informations de l'utilisateur se connecte à un service WCF qui récupère les données et les stocke dans un magasin de données crypté sur leur machine locale pour une utilisation par le service. Maintenant, j'ai regardé haut et bas, et je ne vois pas cela possible avec WiX. L'exécution d'un fichier EXE après l'installation du programme n'est pas 'agréable'. Je voudrais être en mesure d'appeler une méthode dans ma DLL d'action personnalisée qui affiche le formulaire et effectue le traitement dont il a besoin. Y a-t-il un moyen de le faire avec WiX? - ou même, créer une interface graphique personnalisée dans WiX qui obtient les valeurs et transmet ces valeurs à un procédé de traitement

Ainsi, les questions:

  1. Est-ce possible avec WiX?
  2. Quelles sont mes alternatives sinon?

Un grand merci

Répondre

1

La réponse à votre question n ° 1 est oui, mais il est un peu impliqué. Vous pouvez définir des boîtes de dialogue pour collecter des informations auprès de l'utilisateur avec les propriétés UI element et les stocker. Vous pouvez insérer ces boîtes de dialogue dans le flux avec le Publish element. Vous pouvez ensuite créer un script vAc CustomAction et faire à peu près tout avec ces propriétés de session. Découvrez this tutorial pour plus.

+0

Salut, merci pour la réponse. Je pense que je vais devoir trouver une autre méthode pour ce faire, car ce qui doit arriver ne peut pas être facilement fait via VBScript (cryptage, conversation avec SQLite db, conversation avec le service WCF). Je pense que je vais faire un programme d'installation de base en utilisant Wix et avoir une application de paramètres qui gère les paramètres pour le lancement de mes services sur Afterinstall. – tardomatic

1

Vous pouvez certainement installer et démarrer les services Wix - Je fais ça toute la journée, tous les jours :-)

Vérifiez les éléments ServiceInstall et ServiceControl (il y a même plus, si vous avez besoin de spécifier encore plus). Fondamentalement, vous devez d'abord définir votre fichier de service (YourService.exe) en tant que fichier dans un composant, puis vous devez spécifier les éléments ServiceInstall (et éventuellement ServiecControl) en plus de cela.

<Component Id='YourServiceComponent' Guid='.....' DiskId='1'> 
    <File Id='YourServiceEXEFile' Name='YourService.exe' 
     src='(path to your EXE)/YourService.exe' KeyPath='yes'/> 
    <ServiceInstall Id='YourServiceInstall' Name='YourServiceName' 
        Description='.....' ErrorControl='normal' 
        Start='auto' Type='ownProcess' Vital='yes' /> 
    <ServiceControl Id='UninstallYourService' Name='YourServiceName' 
        Remove='uninstall' Wait='yes' /> 
</Component> 

Ensuite, vous devez ajouter ce composant à l'une des caractéristiques de votre installation qui est d'être installé - et qui est à ce sujet!

Marc

+0

Bonjour Marc, Merci pour la réponse. J'ai la partie d'installation de service vers le bas. La partie avec laquelle je suis coincé montre à l'utilisateur un écran où il peut entrer des informations de configuration qui sont ensuite conservées sur le disque. J'aimerais que cela fasse partie du paquet d'installation. Excuses si ma question n'était pas claire. – tardomatic

1

Remarque sur le nœud de contrôle service WiX:

Si vous service repose sur des ensembles que votre installateur est en train de mettre dans le GAC alors il ne démarre pas. Pour une raison quelconque, WiX planifie l'action StartService AVANT qu'il ne publie des assemblages dans le GAC. Si c'est le cas, vous devrez écrire une action personnalisée pour démarrer le service.

Questions connexes