Czy istnieje sposób, aby zapewnić, poprzez określenie kolejności lub określenie zależności, że jeden komponent będzie wykonywany przed drugim w WiX?
W szczególności próbuję utworzyć bazę danych, a następnie opcjonalnie uruchomić na niej skrypt. Mój Wix wygląda podobnie do tego:
<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>
Chcę się upewnić, że komponent SQLServerInstallScriptWA jest wykonywany przed komponentem SQLServerCreateUserWA.
Odpowiedzi:
1 dla odpowiedzi № 1Komponenty nie są zamawiane. Jednak SqlScript i SqlString mają atrybuty sekwencji, których można użyć do narzucenia porządku. Zdarza się, że atrybuty SqlScript i SqlString Sequence są uporządkowane razem, aby obsłużyć tylko ten scenariusz.