0

InstallShield を使用して Oracle のインストール プロセスを自動化するインストーラを作成中です。しかし、問題が発生しています。

基本的に、私が知る必要があるのは、InstallShield ソースから Oracle ワークスペースを作成して、ユーザーに対して自動化する方法があるかどうかです。

私はInstallShieldとOracleのセットアップにかなり慣れていないので、間違った名前を呼んでいる場合に備えて、次を参照しています。

Oracle をインストールしたら、[Oracle Database 11g Express Edition] フォルダの [Get Started] ショートカットをクリックします。次に、「Application Express」ボタンをクリックします。これは通常、ユーザーがワークスペースを作成するために使用され、InstallShield と sqlplus を使用してプロセスを自動化する必要があります (InstallShield 内からそれを行う別の方法がない限り)。

どんな助けでも大歓迎です!

4

1 に答える 1

0

まず第一に、私はこれをうまく管理しましたが、他の誰かがこれを行う必要がないことを願っています. 私が対処しなければならなかった問題の 1 つは、Oracle Express 11g が持つ 64 ビット オペレーティング システムのサポートが明らかに不足していることです... とにかく...

私が行ったことは、2 つの .sql スクリプトを呼び出すバッチ ファイルを作成することでした。そのバッチ ファイルを InstallShield の LauchAppAndWait(..) 関数で実行しました。

バッチ ファイルで呼び出される .sql ファイルは、2 つの別個のタスクを実行します。最初のスクリプトは、次のような構文で必要な新しいワークスペースを作成します。

connect system/password as sysdba
alter session set CURRENT_SCHEMA = APEX_040000;
begin
APEX_INSTANCE_ADMIN.ADD_WORKSPACE(null,'[SCHEMA]','[SCHEMA]',null);
END;
/

「APEX_040000」は、インストールされているOracleのバージョンに依存します(私は思いますか?)。

2 番目のスクリプトは、新しいユーザーの追加を完了します (私は Oracle に精通していませんが、これはユーザーと同じだと思いますか?)。これは、次のようなコードで実現されます。

connect system/password as sysdba
CREATE USER [name of the user] PROFILE DEFAULT IDENTIFIED BY [password]
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK;
GRANT CONNECT TO [username];
GRANT RESOURCE TO [username];
ALTER USER [username] QUOTA UNLIMITED ON USERS;
/

ここで、これを使用するすべての人に、私がこれを行うのは初めてであることを警告したいので、これらすべてが必要であると 100% 確信しているわけではありません。私が知っているのは、それが私の目的のために機能するということだけです。これを読んだ人には、正しくないものを修正するか、コメントして、私がしたことが標準に違反している理由/場合に説明することをお勧めします.

バッチ ファイルは、次のような構文で 2 つのスクリプトを呼び出します。

set "path=%1"
set "var1=[name of the script that sets up the workspace]"
set "var2=[name of the script that adds the user]"

echo exit | "[The complete path to sqlplus.exe]" /nolog @%path%%var1%
echo exit | "[The complete path to sqlplus.exe]" /nolog @%path%%var2%

バッチファイルに関する注意:スクリプトを実行するコマンドの前に「echo exit |」を追加することが、各スクリプトの後にsqlplusを終了させる唯一の方法でした。そうしないと、スクリプトの実行後にハングするだけです。実際の機能は、「エコー出口」が入力として右側のパラメーターの最後に追加されることだと思います(ただし、間違っている可能性もあります)。

これが間違っている/悪い習慣である/あなたを苛立たせている場合は、お詫び申し上げます。繰り返しますが、これは私のニーズに合うとわかった単なる回避策であり、これがどのように適切に行われるかについて議論する用意があります。しかし、何の反応も得られなかったので...これはこれです!笑。

これをすべて自分で理解するのは大変だったので、これがどこかで誰かに役立つことを願っています.

于 2013-06-07T20:34:27.750 に答える