0

我正在创建一个使用 InstallShield 自动执行 oracle 安装过程的安装程序;但是,我遇到了问题。

基本上,我需要知道的是,是否有一种方法可以从 InstallShield 源创建 Oracle 工作区,以便为用户自动化。

我对 InstallShield 和设置 Oracle 还是很陌生,所以如果我把它叫错了,我指的是以下内容:

安装 Oracle 后,单击“Oracle Database 11g Express Edition”文件夹中的“Get Started”快捷方式。然后,单击“Application Express”按钮。这通常用于由用户创建工作区,我需要使用 InstallShield 和 sqlplus 自动执行该过程(除非在 InstallShield 中有其他方法可以执行此操作)。

任何帮助是极大的赞赏!

4

1 回答 1

0

首先,让我说我已经成功地做到了这一点,但我希望没有其他人必须这样做。我不得不处理的问题之一是 Oracle Express 11g 明显缺乏对 64 位操作系统的支持......无论如何......

我所做的是创建一个调用两个 .sql 脚本的批处理文件。我使用 InstallShield 中的 LauchAppAndWait(..) 函数运行该批处理文件。

在批处理文件中调用的 .sql 文件完成两个单独的任务。第一个脚本使用与以下类似的语法创建所需的新工作区:

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 版本(我认为?)。

第二个脚本完成了添加新用户(我不熟悉 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% 确定所有这些都是必要的。我所知道的是它适用于我的目的。我想鼓励任何阅读本文的人更正任何不完全正确的内容或发表评论并解释为什么/如果我所做的事情违反标准。

批处理文件调用这两个脚本,语法类似于以下:

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 在每个脚本之后退出的唯一方法。如果不这样做,它只会在脚本执行后挂起。我相信实际的功能是将“echo exit”附加到右侧参数的末尾作为输入(但同样,我可能是错的)。

如果其中有任何不正确/不良做法/激怒您,我深表歉意。同样,这只是我发现适合我需要的解决方法,我愿意讨论如何正确完成此操作;但是,我没有收到任何回复,所以……这就是这个!哈哈。

我希望这对某个地方的人有所帮助,因为为自己解决所有这些问题很痛苦。

于 2013-06-07T20:34:27.750 回答