|
楼主 |
发表于 2006-4-25 11:27:34
|
显示全部楼层
<>相关事件:OnMoved</P>
<>该事件是在当所有在目标机器上的组件都被安装或反安装时响应,在该事件中的代码总是会被执行。</P>
<>相关函数:</P>
<>SdShowMsg:该函数打开或关闭一个非模态的小窗口,该窗口显示指定的消息。</P>
<>Delay:该函数可以用指定的时间(秒)来使安装程序的执行时间延迟。</P>
<>下面是完整的ODBC注册表配置的代码程序。</P>
<>/*********************程序代码********************/</P>
<>//*******当所有数据拷贝完毕后在这里配置ODBC</P>
<>function OnMoved()</P>
<> STRING szMsg;</P>
<P> STRING svDB;</P>
<P> STRING svASAOdbcDll;</P>
<P> STRING svASA;</P>
<P> STRING szKey;</P>
<P> STRING szClass;</P>
<P> STRING svResult;</P>
<P> </P>
<P> STRING szNumName, szNumValue, svNumValue, szTitle;</P>
<P> NUMBER nType, nSize, nvType, nvSize;</P>
<P> </P>
<P>begin</P>
<P> szMsg = \"正在进行系统配置,请等待...\";</P>
<P> </P>
<P> SdShowMsg (szMsg, TRUE);</P>
<P> svDB = TARGETDIR + \"<A>\\\\db\\\\Demo.db</A>\";</P>
<P> svASAOdbcDll = TARGETDIR + \"<A>\\\\ASA\\\\dbodbc6.dll</A>\";</P>
<P> svASA = TARGETDIR + \"<A>\\\\ASA\\\\dbeng6.exe</A>\";</P>
<P> </P>
<P> RegDBSetDefaultRoot (HKEY_LOCAL_MACHINE);</P>
<P><BR> // 建立MyDemo ASA主键</P>
<P> szKey = \"Software\\\\ODBC\\\\ODBCINST.INI\\\\MyDemo ASA\";</P>
<P> szClass = \"\";</P>
<P> if (RegDBCreateKeyEx(szKey, szClass) < 0) then</P>
<P> MessageBox (\"注册表操作失败,安装程序将终止!\", SEVERE);</P>
<P> abort;</P>
<P> endif;</P>
<P> </P>
<P> // 建立MyDemo ASA下的键值</P>
<P> szNumName = \"Driver\";</P>
<P> szNumValue = svASAOdbcDll;</P>
<P> nType = REGDB_STRING;</P>
<P> nSize = -1;</P>
<P> if (RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue,</P>
<P> nSize) < 0) then</P>
<P> MessageBox (\"注册表操作失败,安装程序将终止!\", SEVERE);</P>
<P> abort;</P>
<P> endif;</P>
<P> szNumName = \"Setup\";</P>
<P> if (RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue,</P>
<P> nSize) < 0) then</P>
<P> MessageBox (\"注册表操作失败,安装程序将终止!\", SEVERE);</P>
<P> abort;</P>
<P> endif;</P>
<P> </P>
<P> szKey = \"Software\\\\ODBC\\\\ODBCINST.INI\\\\ODBC Drivers\";</P>
<P> szNumName = \"MyDemo ASA\";</P>
<P> szNumValue = \"Installed\";</P>
<P> if (RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue,</P>
<P> nSize) < 0) then</P>
<P> MessageBox (\"注册表操作失败,安装程序将终止!\", SEVERE);</P>
<P> abort;</P>
<P> endif;</P>
<P><BR>//*************配置ODBC </P>
<P> RegDBSetDefaultRoot (HKEY_CURRENT_USER);</P>
<P><BR> // 建立Mydemo</P>
<P> szKey = \"Software\\\\ODBC\\\\ODBC.INI\\\\MyDemo\";</P>
<P> if (RegDBCreateKeyEx(szKey, szClass) < 0) then</P>
<P> MessageBox (\"注册表操作失败,安装程序将终止!\", SEVERE);</P>
<P> abort;</P>
<P> endif;</P>
<P><BR> szNumName = \"AutoStop\";</P>
<P> szNumValue = \"Yes\";</P>
<P> nType = REGDB_STRING;</P>
<P> nSize = -1;</P>
<P> if (RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue,</P>
<P> nSize) < 0) then</P>
<P> MessageBox (\"注册表操作失败,安装程序将终止!\", SEVERE);</P>
<P> abort;</P>
<P> endif;</P>
<P><BR> szNumName = \"DatabaseFile\";</P>
<P> szNumValue = svDB;</P>
<P> if (RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue,</P>
<P> nSize) < 0) then</P>
<P> MessageBox (\"注册表操作失败,安装程序将终止!\", SEVERE);</P>
<P> abort;</P>
<P> endif;</P>
<P> </P>
<P> szNumName = \"Description\";</P>
<P> szNumValue = \"My Paper\'s Sample\";</P>
<P> if (RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue,</P>
<P> nSize) < 0) then</P>
<P> MessageBox (\"注册表操作失败,安装程序将终止!\", SEVERE);</P>
<P> abort;</P>
<P> endif;</P>
<P> </P>
<P> szNumName = \"Driver\";</P>
<P> szNumValue = svASAOdbcDll;</P>
<P> if (RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue,</P>
<P> nSize) < 0) then</P>
<P> MessageBox (\"注册表操作失败,安装程序将终止!\", SEVERE);</P>
<P> abort;</P>
<P> endif;</P>
<P><BR> szNumName = \"PWD\";</P>
<P> szNumValue = \"SQL\";</P>
<P> if (RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue,</P>
<P> nSize) < 0) then</P>
<P> MessageBox (\"注册表操作失败,安装程序将终止!\", SEVERE);</P>
<P> abort;</P>
<P> endif;</P>
<P><BR> szNumName = \"Start\";</P>
<P> szNumValue = svASA + \" -d -c8m\";</P>
<P> if (RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue,</P>
<P> nSize) < 0) then</P>
<P> MessageBox (\"注册表操作失败,安装程序将终止!\", SEVERE);</P>
<P> abort;</P>
<P> endif;</P>
<P><BR> szNumName = \"UID\";</P>
<P> szNumValue = \"DBA\";</P>
<P> if (RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue,</P>
<P> nSize) < 0) then</P>
<P> MessageBox (\"注册表操作失败,安装程序将终止!\", SEVERE);</P>
<P> abort;</P>
<P> endif;</P>
<P><BR> //***************注册数据源</P>
<P> szKey = \"Software\\\\ODBC\\\\ODBC.INI\\\\ODBC Data Sources\";</P>
<P> szNumName = \"MyDemo\";</P>
<P> szNumValue = \"MyDemo ASA\";</P>
<P> if (RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue,</P>
<P> nSize) < 0) then</P>
<P> MessageBox (\"注册表操作失败,安装程序将终止!\", SEVERE);</P>
<P> abort;</P>
<P> endif;</P>
<P><BR> // UInstalled -- 反安装后删除新建的键</P>
<P> if ( FindFile(TARGETDIR + \"<A>\\\\db\\\\</A>\", \"Demo.db\", svResult) < 0 ) then</P>
<P> RegDBSetDefaultRoot (HKEY_LOCAL_MACHINE);</P>
<P> szKey = \"Software\\\\ODBC\\\\ODBCINST.INI\\\\MyDemo ASA\";</P>
<P> if (RegDBDeleteKey (szKey) < 0) then</P>
<P> MessageBox (\"删除注册表数据失败!\", SEVERE);</P>
<P> endif;</P>
<P> </P>
<P> szKey = \"<A>\\\\Software\\\\ODBC\\\\ODBCINST.INI\\\\ODBC</A> Drivers\";</P>
<P> if (RegDBDeleteValue (szKey, \"MyDemo ASA\") < 0) then</P>
<P> MessageBox (\"删除注册表数据失败!\", SEVERE);</P>
<P> endif;</P>
<P><BR> RegDBSetDefaultRoot (HKEY_CURRENT_USER);</P>
<P> szKey = \"Software\\\\ODBC\\\\ODBC.INI\\\\MyDemo\";</P>
<P> if (RegDBDeleteKey (szKey) < 0) then</P>
<P> MessageBox (\"删除注册表数据失败!\", SEVERE);</P>
<P> endif;</P>
<P><BR> szKey = \"Software\\\\ODBC\\\\ODBC.INI\\\\ODBC Data Sources\";</P>
<P> if (RegDBDeleteValue (szKey, \"MyDemo\") < 0) then</P>
<P> MessageBox (\"删除注册表数据失败!\", SEVERE);</P>
<P> endif;</P>
<P> endif;</P>
<P> // UInstalled -- end</P>
<P> </P>
<P> </P>
<P> Delay (1);</P>
<P> SdShowMsg (szMsg, FALSE); </P>
<P>end;</P>
<P>/********************* 结束 ********************/<BR></P> |
|