2013-03-07 2 views
0

Les propriétés [DATABASE_NAME] et [SERVER_NAME] sont définies par l'utilisateur lors de l'installation et il semble que, à moins qu'ils font codés en dur alors cela échoue:base de données baisse de l'installateur WiX

<Component Id="Component.Sql.Database" Guid="*"> 
    <sql:SqlDatabase 
     Id="Sql.Database" 
     Database="[DATABASE_NAME]" 
     Server="[SERVER_NAME]" 
     CreateOnInstall="yes" 
     DropOnUninstall="yes" 
     ContinueOnError="no" 
     ConfirmOverwrite="yes" /> 
</Component> 

Le bit qui est censé laisser tomber le db est DropOnUninstall="yes"

que j'ai trouvé un post sur le groupe d'utilisateurs Wix suggérant l'approche suivante pour laisser tomber la base de données lors de la désinstallation:

<Component Id="Component.Sql.DropDatabase" Guid="146CD264-1F6D-4E19-BFCC-E544F5BD2D6C"> 
    <sql:SqlString 
     Id="Sql.DropDatabase" 
     SqlDb="Sql.Master" 
     Sequence="1000" 
     ExecuteOnInstall="no" 
     ExecuteOnUninstall="yes" 
     ExecuteOnReinstall="no" 
     ContinueOnError="no" 
     SQL="DROP DATABASE [\[][DATABASE_NAME]\[]]"/> 
    </Component> 

    <Fragment> 
    <sql:SqlDatabase Id="Sql.Master" Database="master" Server="[SERVER_NAME]" /> 
    </Fragment> 

L'idée étant que lors de la désinstallation, la commande DROP DATABASE ... est exécutée sur la base de données master sur le serveur. Cependant, cette instruction SQL n'est jamais exécutée sur le serveur.

Le journal MSIEXEC ne semble pas fournir d'informations et aucune erreur ne se produit.

Quelqu'un at-il réussi à atteindre cet objectif (avant d'écrire une action personnalisée pour ce faire)?

J'ai essayé de copier le nom de la base de données et le serveur dans le registre pour les mettre en cache, mais cela n'a pas aidé.

+0

-vous mettre en cache la propriété DATABASE_NAME et SERVER_NAME partout lors de l'installation, par exemple le registre? Vous devrez peut-être étendre le programme de désinstallation pour relire cette propriété à partir de l'état local lors de la désinstallation, sinon la valeur sera simplement nulle ou la valeur par défaut de la table Property et cela ne fonctionnera pas. –

+0

J'ai essayé de les mettre en cache dans le registre. Cela semble n'avoir aucun effet. – briantyler

Répondre

0
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" <!-- Need to import this --> 
    xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension"><!-- Need to import this --> 


<sql:SqlDatabase Id="SqlDatabase" 
      Database="TestDatabase" 
      Server="[SQLSERVER]" 
      DropOnUninstall="yes" 
      User="SQLUser">   

Cela va certainement travailler .....

Questions connexes