2009-05-05 7 views
0

Je continue donc de tester et de publier des modifications sur mon application et j'ai rencontré un point douloureux dont je ne sais pas comment traiter. Tout d'abord, mon application utilise une base de données SQL Server CE pour stocker des informations et je dois être en mesure d'apporter des modifications à cette base de données. J'ai donc créé un processus de mise à jour interne qui s'exécute est à jour. Le cœur de ce processus de mise à jour interne est un autre fichier SDF nommé DBUpdates.sdf qui contient toutes les modifications de schéma de base de données qui doivent être appliquées. Le problème que je rencontre est que la distribution MSI que j'ai créée ne remplacera pas ce fichier. Il semble que lorsque SQL Server CE ouvre ce fichier, il modifie la date/heure modifiée du fichier. Ceci est un indicateur pour le processus MSI que le fichier a changé, et qu'il ne doit pas remplacer le fichier. Eh bien maintenant je vois que mes changements de DB ne sont pas appliqués, parce que le processus MSI pense que l'utilisateur a changé ce fichier.Problème avec une distribution MSI

À ce stade, je suis un peu perplexe. J'avais prévu d'utiliser une distribution MSI mais peut-être que je ne peux pas. Qu'est-ce que tu penses?

Répondre

0

Que diriez-vous de stocker votre fichier .sdf en tant que ressource intégrée dans votre exécutable, puis de l'extraire dans un emplacement temporaire sur le disque (si nécessaire) et d'effectuer les mises à jour.

0

Les fichiers non versionnés avec MSI peuvent être un peu difficiles à gérer si vous devez forcer l'installation du fichier. Vous pouvez voir cette question précédente, pour quelques idées, How to add a version number to an Access file in a .msi.

La question contient un lien vers ce billet de blog, http://blogs.msdn.com/astebner/archive/2005/08/30/458295.aspx, qui suggère la façon dont je préfère résoudre ce problème. Ajoutez le fichier .sdf pour faire partie du composant de votre exécutable. L'inconvénient est que si quelqu'un supprime le fichier .sdf, mais pas votre exécutable, je ne pense pas qu'une réparation de l'application va attraper cela. Si vous utilisez Visual Studio pour créer vos fichiers MSI, cela peut s'avérer une solution difficile à mettre en œuvre. Je vous suggère fortement de vérifier WIX dans ce cas. C'est un meilleur système de construction MSI.

+0

Pouvez-vous clarifier ce que vous voulez dire en ajoutant le fichier .sdf dans le cadre du composant de l'exécutable? Je vais faire quelques recherches pour essayer de comprendre cela. Merci –

+0

Salut Kevin, Si vous utilisez l'installateur Visual Studio pour faire le travail, je comprends parfaitement pourquoi cela serait déroutant. J'ai commencé à utiliser Visual Studio pour faire mes installations mais à la fin c'était trop limitatif. Les blocs de construction des installations sont des fichiers, des composants et des fonctions. Avec Visual Studio, chaque fichier est son propre composant et il n'y a qu'une seule fonctionnalité par installation. Dans votre situation ce serait bien si votre composant contenait deux fichiers. J'ai trouvé le MSDN pour être la meilleure source d'informations sur MSI, http://msdn.microsoft.com/en-us/library/aa372830(VS.85).aspx. – LanceSc

+0

Je vous suggère fortement d'utiliser WIX ou Installshied \ Wise pour faire vos installations. Le programme d'installation de Visual Studio élimine trop d'éléments importants de la technologie MSI. – LanceSc

Questions connexes