Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 安装程序更新中的数据库更改管理_Sql_Wix_Windows Installer_Wix3.8 - Fatal编程技术网

Sql 安装程序更新中的数据库更改管理

Sql 安装程序更新中的数据库更改管理,sql,wix,windows-installer,wix3.8,Sql,Wix,Windows Installer,Wix3.8,如何根据某些条件运行一系列数据库脚本 基本上,我想检查安装在用户机器上的构建,然后运行所有脚本,直到安装程序中的构建 假设用户安装了版本号4.10,如果他要安装版本4.15,那么我想运行版本4.111到4.15的SQL脚本 我正在尝试,但它说条件元素不能嵌套在SQL脚本元素中 <sql:SqlScript Id="ScriptV11" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV11" ContinueOn

如何根据某些条件运行一系列数据库脚本

基本上,我想检查安装在用户机器上的构建,然后运行所有脚本,直到安装程序中的构建

假设用户安装了版本号4.10,如果他要安装版本4.15,那么我想运行版本4.111到4.15的SQL脚本

我正在尝试,但它说条件元素不能嵌套在SQL脚本元素中

<sql:SqlScript Id="ScriptV11" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV11"  ContinueOnError="no" Sequence="11">
             <Condition>INSTALLED_BUILD < 4.11 </Condition>
 </sql:SqlScript>

已安装\u内部版本<4.11
任何帮助都将不胜感激


注意:INSTALLED_BUILD属性是使用注册表搜索设置的。

条件可以应用于组件,但使用多个组件的问题是,您不能依赖以任何特定顺序安装的组件。但是,您可以控制脚本的顺序。请参阅此相关问题:

考虑到这一点,并且您确实希望在安装程序中进行升级,您可以尝试以下方法:

<Component Id="UpgradeFromV410" Guid="--Your GUID--">
    <Condition>INSTALLED AND (INSTALLED_BUILD=4.10)</Condition>
    <sql:SqlScript Id="ScriptV10V11" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV11" ContinueOnError="no" Sequence="11"/>
    <sql:SqlScript Id="ScriptV10V12" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV12" ContinueOnError="no" Sequence="12"/>
    <sql:SqlScript Id="ScriptV10V13" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV13" ContinueOnError="no" Sequence="13"/>
    <sql:SqlScript Id="ScriptV10V14" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV14" ContinueOnError="no" Sequence="14"/>
    <sql:SqlScript Id="ScriptV10V15" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV15" ContinueOnError="no" Sequence="15"/>
</Component>

<Component Id="UpgradeFromV411" Guid="--Your GUID--">
    <Condition>INSTALLED AND (INSTALLED_BUILD=4.11)</Condition>
    <sql:SqlScript Id="ScriptV11V12" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV12" ContinueOnError="no" Sequence="12"/>
    <sql:SqlScript Id="ScriptV11V13" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV13" ContinueOnError="no" Sequence="13"/>
    <sql:SqlScript Id="ScriptV11V14" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV14" ContinueOnError="no" Sequence="14"/>
    <sql:SqlScript Id="ScriptV11V15" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV15" ContinueOnError="no" Sequence="15"/>
</Component>

<Component Id="UpgradeFromV412" Guid="--Your GUID--">
    <Condition>INSTALLED AND (INSTALLED_BUILD=4.12)</Condition>
    <sql:SqlScript Id="ScriptV12V13" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV13" ContinueOnError="no" Sequence="13"/>
    <sql:SqlScript Id="ScriptV12V14" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV14" ContinueOnError="no" Sequence="14"/>
    <sql:SqlScript Id="ScriptV12V15" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV15" ContinueOnError="no" Sequence="15"/>
</Component>

<Component Id="UpgradeFromV413" Guid="--Your GUID--">
    <Condition>INSTALLED AND (INSTALLED_BUILD=4.13)</Condition>
    <sql:SqlScript Id="ScriptV13V14" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV14" ContinueOnError="no" Sequence="14"/>
    <sql:SqlScript Id="ScriptV13V15" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV15" ContinueOnError="no" Sequence="15"/>
</Component>

<Component Id="UpgradeFromV414" Guid="--Your GUID--">
    <Condition>INSTALLED AND (INSTALLED_BUILD=4.14)</Condition>
    <sql:SqlScript Id="ScriptV13V15" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="FileV15" ContinueOnError="no" Sequence="15"/>
</Component>

已安装和(已安装的版本=4.10)
已安装和(已安装的版本=4.11)
已安装和(已安装的版本=4.12)
已安装和(已安装的版本=4.13)
已安装和(已安装的版本=4.14)
作为一个解决方案,如果您的发行版本相对较少且相差很远,那么这几乎是可以的。如果您有一个频繁的发布计划,这个解决方案将很快变得不可维护


@Stein关于在开始时运行升级脚本的评论将为您提供更多的控制,并且更易于长期维护。

可能是我应该将每个构建脚本作为单独的组件来运行吗?从应用程序启动例程中运行这样的脚本,而不是在安装程序本身中运行。