Nous avons eu un défi similaire lors du développement de l'application sur laquelle je travaille actuellement. Nous voulions être en mesure d'avoir une nouvelle installation démarrée la première fois préconfigurée avec des paramètres transférés depuis une autre machine, ou un utilitaire de configuration. Honnêtement, je ne sais pas à quel point notre solution est bonne, mais je peux vous dire ce que nous avons fait, ce qui fonctionne pour nous, pour le moment.
Dans notre cas, la plupart de ces paramètres se retrouvent dans le fichier app.config, qu'il n'est pas recommandé d'essayer de manipuler depuis l'extérieur de l'application elle-même. Cela peut être fait, mais c'est dangereux de plusieurs façons subtiles. Si ce n'était pas le cas, la meilleure option serait probablement d'ajouter une "action personnalisée" pour le projet d'installation qui injecterait les données dans le fichier, la base de données, ou tout ce que nous utilisions pour stocker nos paramètres. Un point de départ pour ce faire peut être trouvé in MSDN. Mais comme ce n'était pas une option, nous avons décidé que le moyen le plus simple d'obtenir des données via l'installation sans l'intégrer dans le package d'installation serait d'utiliser un fichier "ride-along". C'est un fichier que votre installation connaît, mais qui n'est pas construit dans le fichier .MSI. Il doit simplement être dans un emplacement connu par rapport au .MSI lors de l'installation. Vous dites au projet d'installation ce que ce fichier est, où il devrait être, et où le mettre. Ensuite, votre application peut vérifier son existence au démarrage et traiter tout ce qu'elle trouve. Dans votre cas, il s'agit d'un paramètre de remplacement d'URL. Ensuite, l'application peut supprimer le fichier, de sorte qu'il ne soit pas chargé chaque fois qu'il démarre.
Dans le projet d'installation, certaines propriétés doivent être définies pour que le fichier fonctionne correctement avec le style de package généré par un projet VS Setup.Assurez-vous de les définir, sinon vous risquez d'obtenir des erreurs ou d'autres comportements bizarres lorsque le fichier «ride-along» est exclu car il n'est pas nécessaire.
- Etat: ne réinstallera
- PacakgeAs: vsdpaLoose
- Vital: Faux
Nous appelons notre AutoImport.Settings.xml fichier. Ceci est un fichier XML personnalisé qui stocke toutes les données que nous voulons être en mesure d'initialiser notre application avec quand il est installé. Il suit le même format que nous utilisons lorsque nous exportons/importons manuellement des configurations de l'application à l'exécution, et utilise le même mécanisme. Il le fait automatiquement au démarrage, s'il trouve le fichier là-bas. Cela nous permet de configurer une machine «prototype» avec tous les paramètres spécifiques au réseau que nous souhaitons avoir, d'exporter ces paramètres, puis d'envoyer ce fichier d'importation pour le chargement automatique avec toutes les autres installations que nous effectuons dans cet environnement réseau.
Comme je l'ai dit, il semble qu'il devrait y avoir un «meilleur» moyen. Les seuls que nous ayons pu trouver signifient partir des mécanismes app.config et user.config, qui ont leurs avantages. Donc, à la fin, nous avons décidé que c'était l'alternative la moins disante qui répondait pleinement à nos besoins.
Merci pour les suggestions. Cette application est installée sur CD, donc l'ajout ou la modification du fichier ride-along pourrait être difficile, donc je pense qu'un meilleur ajustement pour mes besoins serait de modifier le code d'installation pour vérifier une clé de registre bien connue pour un défaut. Mon objectif principal était de savoir si le MSI chercherait automatiquement un fichier d'accompagnement d'un certain nom de fichier et on dirait que vous dites "non, vous devez le faire vous-même". Pas la réponse que je voulais, mais une réponse néanmoins :) –