Как запустить SQL скрипт для создания базы данных с использованием Wix - PullRequest
3 голосов
/ 02 августа 2011

У меня проблема с созданием базы данных с помощью Wix.Все примеры (см. Ссылку ниже), которые я могу найти, - это сначала создание базы данных с использованием wix и запуск сценария создания таблицы sql.Проблема в том, что мне нужно настроить wix для запуска сценария sql с CREATE DATABASE для создания базы данных и таблиц, а НЕ для создания базы данных сначала с помощью тега SqlDatabase в файле .wxs.Возможно ли это сделать в Wix?Я использую SQL Server Express.Любой пример того, как это сделать, будет полезен.

http://www.rrreese.com/Article/Show/WiX%20SQL

Пример сценария sql:

CREATE DATABASE My_DB
CREATE TABLE Test (Value1 CHAR(50), Value2 INTEGER)
CREATE INDEX TestIndex ON Test (Value1)

Заранее спасибо.Любая помощь очень ценится.

Ответы [ 2 ]

7 голосов
/ 02 августа 2011

Почему у вас нет файла сценария, содержащего код SQL для создания базы данных.

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" 
xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension">
  <Product Name='SQL app 1.0' Id='DB501C18-86C7-4D14-AEC0-86416A69ABDE' Language='1033' Codepage='1252'
     Version='1.0.0' Manufacturer='ABC Ltd.'>
            <Package Id='????????-????-????-????-????????????' Keywords='Installer' Description="SQL App 1.0 Installer"
              Comments='Comment.' Manufacturer='ABC Ltd.' InstallerVersion='100'
              Languages='1033' Compressed='yes' SummaryCodepage='1252' />
        <Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' />
        <User Id="MySQLUser" Name="[SQLUSER]" Password="[SQLUSERPASSWORD]"></User>
        <Directory Id='TARGETDIR' Name='SourceDir'>
            <Directory Id='ProgramFilesFolder' Name='PFiles'>
                <Directory Id='INSTALLDIR' Name='TestSQL'>
                      <Component Id="MySqlComponent" Guid="C50999A0-02FD-42d5-9F65-7375318DD328">
                        <SqlDatabase Id="MySqlDatabase" Database="MyDatabase" Server="[SQLSERVER]" Instance="[SQLINSTANCE]"
                            CreateOnInstall="yes" DropOnUninstall="yes" User="MySQLUser" ContinueOnError="yes">
                              <SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateTablesBin"></SqlScript>
                        </SqlDatabase>
                      </Component>
                </Directory>
             </Directory>
         </Directory>
        <Binary Id="CreateTablesBin" src="CreateDatabase.sql"></Binary>
        <Feature Id='Complete' Level='1' Description="Full" Title="Full Installation">
            <ComponentRef Id='MySqlComponent' />
        </Feature>
    </Product>
</Wix>
1 голос
/ 02 августа 2011

Вы должны иметь тег SqlDatabase. Без этого установщик никогда не узнает, на каком сервере и в какой базе данных должны выполняться сценарии. Однако вы можете установить для CreateOnInstall и DropOnUninstall (есть три CreateOnX и три DropOnX, вы можете проверить их все ) на no, чтобы предотвратить создается или удаляется автоматически.

Обратите внимание, что если вы сделаете это, вы должны предоставить SqlScript, который запускается при откате, для удаления базы данных в случае сбоя программы установки. Обычно это делается автоматически с помощью тега SqlDatabase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...