Как часть созданного пакета MSI, который я создаю через WIX, я копирую резервную копию базы данных и пытаюсь восстановить ее с помощью расширения сценария sql. К тому времени, когда происходит действие ExecuteSqlStrings, файл резервной копии еще не скопирован, поскольку. Я поместил оба InstallSqlData и ExecuteSqlStrings, чтобы происходить прямо перед InstallFinalize. Есть ли способ гарантировать, что выполнение сценариев sql происходит после того, как файлы были скопированы? Чего мне не хватает, installlexecutesequence должна выполняться в порядке, верно? Эти действия происходят синхронно, верно?
Прежде чем кто-либо задает вопрос, пожалуйста, знайте, что когда я помещаю файл в местоположение, используемое запросом, пакет msi не выдает ошибку. Я также удостоверился, что файл копирует в правильное местоположение, удаляя сценарий sql вообще. Вот некоторый код:
<Fragment>
<Binary Id="createDB_FromBackup" SourceFile="DBScript\1_Create_From_Backup.sql" />
<ComponentGroup Id="DatabaseComponents" Directory="INSTALLFOLDER" >
<Component Id="cmpSqlDatabase" Guid="{F950605D-AA59-43E6-AB19-9452F6BEC649}" KeyPath="yes" Win64="$(var.Win64)" >
<sql:SqlDatabase
Id="sqlDatabase_MyDatabase"
Server="[ComputerName]"
Instance="$(var.SqlInstanceName)"
Database="master"
CreateOnInstall="no"
DropOnUninstall="no"
ContinueOnError="no"
ConfirmOverwrite="yes"
DropOnReinstall="no"
DropOnInstall="no"
CreateOnReinstall="no"
CreateOnUninstall="no">
<sql:SqlString Id="create_dbBackupTable"
ExecuteOnInstall="yes"
ExecuteOnReinstall="no"
ExecuteOnUninstall="no"
ContinueOnError="no"
Sequence="1"
SQL="
if OBJECT_ID('master.dbo._pj15DBBackupInfo') is not null
begin
drop table master.dbo._pj15DBBackupInfo
end
select * into master.dbo._pj15DBBackupInfo from (select BackupLocation = '[INSTALLFOLDER]DB-Backup\') dvt;" />
<!-- restore PJ15 DB database -->
<sql:SqlScript Id="sqlScript_CreateDB" BinaryKey="createDB_FromBackup"
Sequence="2"
ExecuteOnInstall="yes"
ExecuteOnReinstall="no"
ExecuteOnUninstall="no"
ContinueOnError="no" />
</sql:SqlDatabase>
</Component>
</ComponentGroup>
</Fragment>
<InstallExecuteSequence>
<Custom After="InstallFinalize" Action="InstallSqlData" Overridable="no"/>
<Custom After="InstallSqlData" Action="ExecuteSqlStrings" Overridable="no"/>
</InstallExecuteSequence>