0

環境

  • 複数のテーブルを使用する DNN 7 モジュールがあります。

  • わかりやすく使いやすいように、CREATE TABLE ステートメントを別のファイルにしています。

  • モジュールの .dnn ファイルには、コンポーネント タグの下に各スクリプトの複数のエントリがあります。

問題

モジュールをインストールすると、最後のインストール スクリプトのみが実行され (「CreateProductWidths」の例の場合)、他のスクリプトは無視されます。

質問

インストール中に複数のスクリプトを別々のファイルで実行するにはどうすればよいですか? このモジュールには合計 15 個のテーブルがあるため、それらのすべての定義を 1 つのスクリプトに含めることはできません。難しすぎる場合は、私のやり方が間違っている可能性があり、アドバイスをお待ちしています。ありがとう。

<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>
4

1 に答える 1

0

ディロン、

DNN のインストールでは、バージョンごとに 1 つのスクリプト ファイルしかサポートされていないと思います。ほとんどの場合、モジュールの CREATE TABLE/SPROC/VIEW スクリプトは最初のバージョン、つまり 01.00.00 です。その後、後続のスクリプトには、テーブル スクリプトの変更、またはそのバージョンの変更に必要なものが含まれます。これは、バージョン管理を管理できるため、優れた方法です。また、インストールが修復された場合に備えて、スクリプトを再実行できるようにする必要があります。したがって、CREATE ステートメントの前に IF EXISTS ステートメントを付ける必要があります。

そうは言っても、スクリプトを分割したい場合は、パッケージのバージョンを 01.00.00 に設定できます。

いいえ:

<package name="Module.Name" type="Module" version="00.01.00">

次に、スクリプトのバージョンを変更します。つまり、「00.00.01」、「00.00.02」、「00.00.03」などです。DNN は、バージョンがパッケージのバージョン番号以下のすべてのスクリプトを実行します。また、バージョン番号順に実行します。

于 2013-10-15T02:24:30.710 に答える