我的第一次,望赐教

xcwonder 2001-08-03 09:46:16
不知道哪些*.dll需要做到安装文件里,如果把所有都搞进去就太大了,另外为什么做出来的安装文件在别的机器上就不好使,在我的机器上就行,听说是不是要把dsn的变成什么
ini的。能不能解释详细一点,多谢拉。
另外我只能给23分,想多给都不行,如果问题解决了,我另开一个专门加分的问题给诸位兄弟。
...全文
59 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xcwonder 2001-08-03
  • 打赏
  • 举报
回复
万分感谢,danny!
hzslx 2001-08-03
  • 打赏
  • 举报
回复
ok
samwcm 2001-08-03
  • 打赏
  • 举报
回复
已经回答很仔细了。
killerdanny 2001-08-03
  • 打赏
  • 举报
回复
基于SQL AnyWhere库的程序环境配置

基于SQL AnyWhere库的程序运行环境配置
maosd
2000-10-22
pb开发的单机版数据库程序安装时总是很麻烦!用install builder做起来很方便,也比较稳定,但安装界面现在已相当落后。用install sheild 可以做出相当漂亮的安装程序,但方法相当繁杂(具体方法很多pb网站都有介绍)。现在介绍一种只需要拷贝目录即可运行的方法。
1。找出pb程序所需相关dll
pbdwe70.dll,pbodb70.dll,pbvm70.dll,libjcc.dll
2。找出odbc相关文件
Dbeng50.exe,Dbl50t.dll,odbc32.dll,odbccp32.dll,odbcint.dll,Wl50ent.dll,Wod50t.dll
3。做个标准的odbc注册表文件(不管时install builder,还是install sheild,都是操作注册表,那么干脆直接写吧!)
REGEDIT4

[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\blob_2] <-- blob_2就是odbc数据源名称
"Driver"="d:\\temp\\blob\\WOD50T.DLL"
"UID"="dba"
"PWD"="sql"
"Start"="d:\\temp\\blob\\dbeng50.exe"
"DatabaseFile"="d:\\temp\\blob\\blob_2.db"
"DatabaseName"="blob_2"
"AutoStop"="yes"

注意把 d\\temp\\blob\\ 换成你的目标路径,blob_2.db换成你的库名。
以上文件全部压缩成一个包(包括你的运行文件),就成了个安装包了:释放到指定路径后,运行注册表文件后,即可!

4。更好的解决办法是程序里直接把注册表写好,参见以下代码:
integer li_rtn
string ls_path = "d:\temp\blob\"

string ls_keyname = 'HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\blob_2'
string ls_driver
string ls_UID = "dba"
string ls_PWD = "sql"
string ls_Start
string ls_DatabaseFile
string ls_DatabaseName = "blob"
string ls_AutoStop = "yes"

string ls_tmp

if Handle(GetApplication()) <> 0 then
//运行状态
//取路径
ls_path = Space (128)
li_rtn = GetModuleFileNameA (Handle (GetApplication ()), ls_path, 128)
// 调用此函数需要声明以下外部函数
// Get Runtime Path
// Function uLong GetModuleFileNameA(long hinstModule, Ref String lpszPath, uLong cchPath) Library "kernel32.dll"
//

// 该函数返回的是运行文件名(所以必须判断运行模式),需要自己找出路径
integer i
for i = len(ls_path) to 1 step -1
if mid(ls_path,i,1) = '\' then
goto jumpout
end if
next
jumpout:
// 不知道怎么从循环中跳出来,只好用goto了
ls_path = left(ls_path,i - 1)
ls_path = ls_path + '\'

end if

ls_driver = ls_path + "WOD50T.DLL"
ls_Start = ls_path + "dbeng50.exe"
ls_DatabaseFile = ls_path + "blob.db"


li_rtn = RegistrySet(ls_keyname, "Driver", RegString!, ls_driver)
li_rtn = RegistrySet(ls_keyname, "UID", RegString!, ls_UID)
li_rtn = RegistrySet(ls_keyname, "PWD", RegString!, ls_PWD)
li_rtn = RegistrySet(ls_keyname, "Start", RegString!, ls_Start)
li_rtn = RegistrySet(ls_keyname, "DatabaseFile", RegString!, ls_DatabaseFile)
li_rtn = RegistrySet(ls_keyname, "DatabaseName", RegString!, ls_DatabaseName)
li_rtn = RegistrySet(ls_keyname, "AutoStop", RegString!, ls_AutoStop)

这样,程序就可以拷贝到哪里,就在那里运行了。真正的“环保软件”!pb 程序实现这一点可真不容易!


caolei1974 2001-08-03
  • 打赏
  • 举报
回复
你用的是什么数据库

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧