上下文
我有一个使用多个表的DNN 7模块。
为了清晰和易用,我将CREATE TABLE语句放在单独的文件中。
我的模块的.dnn文件在每个脚本下有多个条目 组件标签。
问题
当我安装模块时,只执行最后一个安装脚本(在示例“CreateProductWidths”的情况下),忽略其他脚本。
问题
如何在安装期间在单独的文件中运行多个脚本?我在这个模块中总共有15个表,因此将它们的所有定义都放在一个脚本中是不合适的。如果它太难了,我可能会做错了,我愿意接受建议。感谢。
示例
<component type="Script">
<scripts>
<basePath>DesktopModules\ProductManager</basePath>
<script type="Install">
<path>Providers\DataProviders\SqlDataProvider</path>
<name>CreateProductCategories.SqlDataProvider</name>
<version>00.00.01</version>
</script>
<script type="Install">
<path>Providers\DataProviders\SqlDataProvider</path>
<name>CreateProductFamilies.SqlDataProvider</name>
<version>00.00.01</version>
</script>
<script type="Install">
<path>Providers\DataProviders\SqlDataProvider</path>
<name>CreateProductWidths.SqlDataProvider</name>
<version>00.00.01</version>
</script>
<script type="UnInstall">
<path>Providers\DataProviders\SqlDataProvider</path>
<name>Uninstall.SqlDataProvider</name>
<version>00.00.01</version>
</script>
</scripts>
</component>
答案 0 :(得分:0)
Dilon,
我认为DNN安装仅支持每个版本一个脚本文件。大多数情况下,模块CREATE TABLE / SPROC / VIEW脚本位于其第一个版本中,即:01.00.00。然后,后续脚本将具有alter table脚本或为该版本更改所需的任何内容。这是一种很好的做法,因为它允许您管理版本控制。如果修复了安装,您的脚本也应该可以重新运行。因此,您的CREATE语句应以IF EXISTS语句开头。
话虽这么说,如果你想打破你的脚本,你可以将软件包版本设置为01.00.00。
IE:
&lt; package name =“Module.Name”type =“Module”version =“00.01.00”&gt;
然后以不同方式编写脚本,即:“00.00.01”,“00.00.02”,“00.00.03”等.DNN将运行版本小于或等于包版本号。它还将以版本号顺序运行它们。