2009-07-08 6 views
0

Existe-t-il un moyen de s'assurer, en spécifiant un ordre ou en spécifiant des dépendances, qu'un composant s'exécutera avant un autre dans WiX? En particulier, j'essaie de créer une base de données, puis, éventuellement, d'exécuter un script dessus. Mon Wix ressemble à ceci:Ordre d'exécution des composants dans Wix

<ComponentGroup Id="SQLServerComponentGroup"> 
    <Component Id="SQLServerIstallScriptWA" Guid="" > 
    <Condition>INSTALLDB</Condition> 
     <mssql:SqlDatabase Id="dbWA" Server="localhost" Database="[DATABASENAME]" CreateOnInstall="yes" ConfirmOverwrite="yes" DropOnReinstall="no" DropOnUninstall="yes"> 
      <mssql:SqlScript Id="dbWAScript" ContinueOnError="no" ExecuteOnInstall="yes" ExecuteOnReinstall="no" Sequence="1" BinaryKey="MSSQLCreateDBBin" /> 
     </mssql:SqlDatabase> 
    </Component> 

    <Component Id="SQLServerCreateUserWA" Guid=""> 
     <Condition>INSTALLDB AND DBCREATEUSER = 1</Condition> 
     <mssql:SqlDatabase Id="dbWA" Server="localhost" Database="[DATABASENAME]"> 
      <mssql:SqlString Id="dbWACreateUser" ContinueOnError="no" ExecuteOnInstall="yes" ExecuteOnReinstall="no" ExecuteOnUninstall="no" Sequence="1" SQL="" /> 
     </mssql:SqlDatabase> 
    </Component> 
</ComponentGroup> 

Je veux faire en sorte que le composant SQLServerInstallScriptWA est exécutée avant que le composant SQLServerCreateUserWA.

Répondre

1

Les composants ne sont pas commandés. Cependant, SqlScript et SqlString ont des attributs de séquence qui peuvent être utilisés pour imposer un ordre. Les attributs SqlScript et SqlString Sequence ont été commandés ensemble pour gérer ce scénario.

+0

La séquence est alors transmise d'un composant à l'autre? – Jeff

+0

Je pense qu'il est plus sûr de dire que @Sequence n'a rien à voir avec Component. –

+0

Je crois que l'ordre des ComponentRefs dans le Feautre dicte l'ordre d'exécution. Généralement. – Will