高分呀,怎样用InstallShield6安装Delphi的BDE应用程序和ODBC数据源

flytiger1977 2001-10-24 06:58:28
老兄们:
我遇到一个很头痛的问题,就是怎样用InstallShield6安装Delphi的BDE应用程序和ODBC数据源,还有就是哪里有InstallShield6.22和它的注册码。
谢谢了高分呀。
...全文
181 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
NetCobra 2001-12-12
  • 打赏
  • 举报
回复
其实InstallShield中就自带了BDE,只要你加入一个BDE这个InstallShield Object就可以了。
gxdmm 2001-10-24
  • 打赏
  • 举报
回复
转贴一篇文章:

1)先用project WIZARD做一个新的项目
在选择需要的对话BOX时最好全选上,这些对话BOX去好去,加就有点麻烦拉。
安装类型中选上缺省的三种,就是compact,typical,custom,将来不要也可以删掉。
其他都用缺省的,以后到项目里改。
点击完成后,小功告成,现在有一个空项目拉!

2)左中靠下的这些tab page是很重要的
a、scripts ……这就是你的setup脚本,语法不知道象c还是更象pascal。scripts你是不能不接触的,否则你就只能做点小东西。is的script还是很强大的,也很有趣,在连载XXX中会讲一讲。

b、component ……元件嘛,叫组件比较合适。这里定义的就是你在选择安装类型时(就是custom时)用户看到的东西,把他们改成中文吧。
这里可以添加新的com,删除已有的com,改名字,如果你不喜欢用菜单,点点老鼠右键。
它们的具体属性系统都有很直接的提示,自己去研究吧。
Destination指的是文件的安装目的地,其中可以用户自定义目的,这个在在连载XXX中会讲一讲。
有个include file group这是怎么一回事呢?

c、file group ……原来是它。原来文件不是直接连接到component上,而是文件先连接到file group里,再由File group连接到component上。文件-》file group-》component。
file group取什么名字都没有关系,在安装时用户看不到,用户只看到component

d、Setup Type ……不要改成中文名字,安装时自动变成中文的。

e、resource ……里的东西是项目安装定义,不要忽视了

f、Setup file ……把安装一开始的欢迎界面的bmp加进来,旧的删掉吧,其实根本不用改什么,只要把项目目录里的setup.bmp换掉就好了。其他的东西我没有研究过。

g、Media ……讲不出什么,我根本没有动过它。

3)好了,先编译一下吧,喂,什么都没加呢!没关系,编译一下有点成就感。用media build wizad生成安装文件,运行一下看看。

scripts可是大小写敏感的!
“\”是转义字符,就相当与PB的“~”
“\r\n\t”等

变量类型:
BOOL TRUE or FALSE
CHAR 8-bit 有符号字符
DWORD 同NUMBER
HWND 窗口句柄(内部类型是NUMBER)
INT 同NUMBER
LIST 指向InstallShield list的指针(内部类型是NUMBER)
LONG 同NUMBER
LPSTR 同POINTER
NUMBER 有符号4字节整数
POINTER 指向数据的指针(如int i;p=&i)
SHORT 同NUMBER
STRING 字符串

赔本大甩卖!
字符串的操作:
(1) "+" 加
"123"+"345" = "123345" (12345)
"\\123"+"\\345" = "\\123\\345" (\123\345)
(2) "^" 路径加
"123"^"345" = ".\\123\\345" (.\123\345)
"\\123"^"345" = "\\123\\345" (\123\345)
"\\123"^"\\345" = "\\123\\345" (\123\345)
如果你弄不清楚,就用“+”吧
(3) "%" str1 % str2
if str1包含str2 then true else false
和StrFind (str1, str2)一样

1-函数(Function)***************函数(Function)
举个例子:

//函数声明
prototype RectangleArea (INT,INT);

//函数体
function RectangleArea (nLength, nWidth) //函数名
INT nVal; //局部变量定义
begin
nVal = nLength * nWidth; //函数体
return nVal;

end;

2-循环*******************循环
I、for循环

a、正循环
for iCount = 1 to 10 //step 1
MessageBox ("You'll see this 10 times", INFORMATION);

endfor;

b、负循环
for j = 20 downto 10 step 5
MessageBox ("You will see this three times", INFORMATION);
endfor;

II、repeat……until循环
nCount = 1;
repeat
MessageBox("Count is less than 5", INFORMATION);
nCount = nCount + 1;
until (nCount = 5);

III、while……endwhile循环
nCount = 1;
while (nCount < 5)
MessageBox ("This is still true.", INFORMATION);
nCount = nCount + 1;
endwhile;

3-判断**********************判断
a、
if (szStringA = "exit") then
AskYesNo ( "Are you sure you want to exit?" , NO );
endif;

b、
if (condition) then
// statements to be executed if condition is true
else
// statements to be executed if condition is false
endif;

c、
if (first condition) then
// statements to be executed if condition is true
elseif (second condition) then
// statements to be executed if condition is false
elseif (third condition) then
// statements to be executed if third condition is false
endif;

d、
if condition goto labelname;
(五)

系统变量有时候是很方便的!
跳楼大拍卖!!!
BATCH_INSTALL 指示当传输文件采用LOCKEDFILE或SHAREDFILE时是否锁定文件
CMDLINE Setup.exe传递的命令行参数
COMMONFILES Common files全路径如“c:\program file\common files”
ERRORFILENAME
FOLDER_DESKTOP Windows 95 或Windows NT 4.0桌面folder的路径
FOLDER_PROGRAMS Windows 95 或Windows NT 4.0 开始菜单中开始\程序 的folder
FOLDER_STARTMENU Windows 95 或Windows NT 4.0 开始菜单中开始 的folder
FOLDER_STARTUP Windows 95 or Windows NT 4.0 开始菜单中启动 的folder
INFOFILENAME InstallShield创建的备份文件全文件名
ISRES _isres.dll全文件名
ISUSER _isuser.dll全文件名
ISVERSION 版本
MEDIA 当前Media库名
MODE 指示程序运行于normal还是silent模式
PROGRAMFILES Windows 95 or Windows NT 4.0 “Program files” folder
SELECTED_LANGUAGE 安装选择的语言号
SRCDIR 安装源目录的全路径
SRCDISK 安装源目录的盘符
SUPPORTDIR 临时文件路径
TARGETDIR 安装目的目录的全路径
TARGETDISK 安装目的目录的盘符
UNINST unInstallShield程序用的反安装文件全文件名
WINDIR Windows的全路径(c:\windows)
WINDISK Windows位于的盘符
WINSYSDIR Windows\system的全路径(c:\windows\system)
WINSYSDISK Windows\system位于的盘符

(六)

常用的DIALOG
最近这几篇讲SCRIPTS的不用都看,用的时候查一查就可以了。
AskText
AskYesNo
MessageBox
SdShowDlgEditx
SdShowMsg
SprintfBox
SetDialogTitle
*************所有dialog使用前,请务必将所有变量初始化!**********

1、AskText (szQuestion, szDefault, svResult);
希望用户输入一行文本,szQuestion是问题,szDefault缺省文本,svResult用户输入文本
例:
svResult="";
szMsg = "请输入.";
szDefault = "123456";
AskText(szMsg, szDefault, svResult);

2、AskYesNo (szQuestion, nDefault);
询问dialog,nDefault为缺省TAB位置,返回YES或NO
例:
if (AskYesNo("YES?", YES) = YES) then
//
endif;

3、MessageBox (szMsg, nType);
就是MessageBox,szMsg是显示的消息
nType:
INFORMATION
WARNING
SEVERE
例:
szMsg = "ABCDEFG.";
nType = WARNING;
MessageBox(szMsg, nType );

4、SdShowDlgEdit1 (szTitle, szMsg, szField1, svEdit1);
SdShowDlgEdit2 (szTitle, szMsg, szField1, szField2, svEdit1, svEdit2);
SdShowDlgEdit3 (szTitle, szMsg, szField1, szField2, szField3, svEdit1, svEdit2, svEdit3);
有一个,两个或三个文本输入行
例:
szTitle = "SdShowDlgEdit2 Example";
szMsg = "All files within the Source directory will be copied into the Target directory.";
szField1 = "Source:";
szField2 = "Target:";
svEdit1 = "C:\\EXAMPLE\\SOURCE";
svEdit2 = "C:\\EXAMPLE\\TARGET";

if (SdShowDlgEdit2(szTitle, szMsg, szField1, szField2, svEdit1, svEdit2) < 0) then
MessageBox("SdShowDlgEdit2 failed.", SEVERE);
endif;

5、SdShowMsg (szMsg, bShow);
这是一个很好的东东,出现一个光秃秃的提示窗,没有Button和Title BAR
例:
szMsg = "正在更新注册表.";
SdShowMsg(szMsg, TRUE);
//更新注册表……………………
SdShowMsg(szMsg, FALSE);

6、SprintfBox (nType, szTitle, szFormat [,arg] [,...]);
nType:
INFORMATION
WARNING
SEVERE
和MessageBox差不多,有人喜欢用。
例如:
szString = "This is a sample text string";
nNumber = 420;
cChar = 'P';

szTitle = "SprintfBox Example";
szFormat = "String: %s";

SprintfBox(INFORMATION, szTitle, szFormat, szString);

szFormat = "Number: %d";
SprintfBox(WARNING, szTitle, szFormat, nNumber);

szFormat = "Character: %c";
SprintfBox(SEVERE, szTitle, szFormat, cChar);

7、SetDialogTitle (nDialogId, szTitle);
上面的MessageBox没有标题,怎么办?用这个!
nDialogId:
DLG_ASK_TEXT AskText
DLG_ASK_YESNO AskYesNo
DLG_MSG_INFORMATION Information-style MessageBox.
DLG_MSG_SEVERE Severe-style MessageBox.
DLG_STATUS Changes the title of the dialog-style progress indicator.
DLG_MSG_WARNING Warning-style MessageBox.
DLG_USER_CAPTION user-defined messagebox .
例如:
nDialogId = DLG_ASK_YESNO;
szTitle = "SetDialogTitle Example";
if (SetDialogTitle (nDialogId, szTitle) < 0) then
MessageBox("SetDialogTitle failed.", SEVERE);
else
AskYesNo("Did SetDialogTitle change this title?", YES);
endif;

(七)

常用注册表修改函数

1、RegDBSetDefaultRoot (nRootKey);
这个函数是设置缺省注册表类,在使用读和写以前,一定要使用这个函数设置一下。
HKEY_CLASSES_ROOT
HKEY_LOCAL_MACHINE
HKEY_CURRENT_USER
HKEY_USERS

2、RegDBCreateKeyEx (szKey, szClass);
创建一个键名,没用!因为RegDBSetKeyValueEx ()会自动创建。

3、RegDBSetKeyValueEx (szKey, szName, nType, szValue, nSize);
nType
REGDB_STRING string,不能有换行
REGDB_STRING_EXPAND 扩充环境变量表达式,如 "%MYPATH%".
REGDB_STRING_MULTI string,可以换行
REGDB_NUMBER 数字,我没有用过,其实注册表里的都是字符串,还是转换成字符串吧
REGDB_BINARY 二进制数据,先要存在string里
设置一个键值,如果没有键名回会自动创建该键名。
szName 键名
szKey 键
szValue 键值
nSize 如果是REGDB_STRING, REGDB_STRING_EXPAND或 REGDB_NUMBER取-1
否则大于等于最小长度
返回0成功,<0失败

4、RegDBGetKeyValueEx (szKey, szName, nvType, svValue, nvSize);
得到一个键值
和RegDBSetKeyValueEx差不多。
返回0成功,<0失败

还有一些delete之类和一些特殊的reg函数。一般用不到。特殊的reg函数只是简化一些操作,实现操作的这几个基本的都能实现。

讲了这么多,还是不懂?举个例子:
RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );
我写,写写写
RegDBSetKeyValueEx ( "SOFTWARE\\Microsoft\\Internet Explorer\\Plugins\\Extension\\.pbd" , "" , REGDB_STRING , "" , -1 );
RegDBSetKeyValueEx ( "SOFTWARE\\Microsoft\\Internet Explorer\\Plugins\\Extension\\.pbd" , "Content Type" , REGDB_STRING , "application/vnd.powerbuilder6" , -1 );
于是:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Plugins\Extension\.pbd [缺省] = ""
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Plugins\Extension\.pbd Content Type = "application/vnd.powerbuilder6"

我读,读读读
if ( RegDBGetKeyValueEx ("Software\\Netscape\\Netscape Navigator\\Main","Install Directory" , nvType, svNetscape , nvSize )<0) then
svNetscape=TARGETDIR;
else
svNetscape=svNetscape+"\\Program\\Plugins";
endif;

(八)

常见需要修改注册表的情况:
我只作过32位的,以下都是基于32位的

1、安装32位ODBC for Sql Any Where
不用修改

2、安装SQL anywhere的DB
都加上全路径,避免...
svDBprofile = "LAW"; //数据库别名,就是在PB连接串中的那个
svDB = TARGETDIR+"\\db\\law.db";//law.db的全名
svWod50t = TARGETDIR+"\\sqlany50\\wod50t.dll";//wod50t.dll的全名
svStart = TARGETDIR+"\\sqlany50\\dbeng50 -Q";//dbeng50.exe的...,注意不要加上.exe,"-Q"表示不要那个讨厌的sqlanywhere窗口跑出来。

RegDBSetDefaultRoot ( HKEY_CURRENT_USER );
RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBC.INI\\"+svDBprofile , "AutoStop" , REGDB_STRING , "YES" , -1 );//不用改
RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBC.INI\\"+svDBprofile , "DatabaseFile" , REGDB_STRING , svDB , -1 );
RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBC.INI\\"+svDBprofile , "DatabaseName" , REGDB_STRING , svDBprofile , -1 );
RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBC.INI\\"+svDBprofile , "Driver" , REGDB_STRING , svWod50t , -1 );
RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBC.INI\\"+svDBprofile , "PWD" , REGDB_STRING ,"sql" , -1 );//不用改
RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBC.INI\\"+svDBprofile , "UID" , REGDB_STRING ,"dba" , -1 );//不用改
RegDBSetKeyValueEx ( "SOFTWARE\\ODBC\\ODBC.INI\\"+svDBprofile , "Start" , REGDB_STRING , svStart, -1 );

3、安装PB的window plugin (also for IE4.0)
RegDBSetDefaultRoot (HKEY_LOCAL_MACHINE);
svPath="c:\\Program Files\\Internet Explorer\\plugins\\nppba60.dll";

LongPathToShortPath ( svPath );
RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );
RegDBSetKeyValueEx ( "SOFTWARE\\Microsoft\\Internet Explorer\\Plugins\\Extension\\.pbd" , "" , REGDB_STRING , "" , -1 );
RegDBSetKeyValueEx ( "SOFTWARE\\Microsoft\\Internet Explorer\\Plugins\\Extension\\.pbd" , "Content Type" , REGDB_STRING , "application/vnd.powerbuilder6" , -1 );
RegDBSetKeyValueEx ( "SOFTWARE\\Microsoft\\Internet Explorer\\Plugins\\Extension\\.pbd" , "Location" , REGDB_STRING , svPath , -1 );
RegDBSetKeyValueEx ( "SOFTWARE\\Microsoft\\Internet Explorer\\Plugins\\Extension\\.pbd" , "Version" , REGDB_STRING , "6.5.00.444" , -1 );
RegDBSetKeyValueEx ( "SOFTWARE\\Microsoft\\Internet Explorer\\Plugins\\MIME\\application/vnd.powerbuilder" , "Extension" , REGDB_STRING , ".pbd" , -1 );
RegDBSetKeyValueEx ( "SOFTWARE\\Microsoft\\Internet Explorer\\Plugins\\MIME\\application/vnd.powerbuilder6" , "Extension" , REGDB_STRING , ".pbd" , -1 );

RegDBSetDefaultRoot ( HKEY_CLASSES_ROOT );
RegDBSetKeyValueEx ( ".pbd" , "" , REGDB_STRING , "PowerBuilder.Application" , -1 );
RegDBSetKeyValueEx ( ".pbd" , "Content Type" , REGDB_STRING , "application/vnd.powerbuilder" , -1 );
RegDBSetKeyValueEx ( "MIME\\Database" , "Content Type" , REGDB_STRING , "application/vnd.powerbuilder" , -1 );

4、//注册Access数据库
////////////////////////////////////////////////////////////
RegDBSetDefaultRoot ( HKEY_CURRENT_USER );
svDB="SOFTWARE\\ODBC\\ODBC.INI\\"+"LAW";
svDBFile = TARGETDIR+"\\db\\law.mdb";//law.db的全名
szDriver = WINSYSDIR+"\\odbcjt32.dll"
RegDBSetKeyValueEx ( svDB , "DBQ" , REGDB_STRING , svDBFile , -1 );
RegDBSetKeyValueEx ( svDB , "Driver" , REGDB_STRING , szDriver , -1 );
RegDBSetKeyValueEx ( svDB , "FIL" , REGDB_STRING , "MS Access;" , -1 );
RegDBSetKeyValueEx ( svDB , "DriverId" , REGDB_STRING , "25" , -1 );
RegDBSetKeyValueEx ( svDB , "SafeTransactions" , REGDB_STRING , "0" , -1 );
RegDBSetKeyValueEx ( svDB , "UID" , REGDB_STRING , "" , -1 );

RegDBSetKeyValueEx ( svDB +"\\Engines\\jet" , "ImplicitCommitSync" , REGDB_STRING , "Yes" , -1 );
RegDBSetKeyValueEx ( svDB +"\\Engines\\jet", "UserCommitSync" , REGDB_STRING , "Yes" , -1 );
RegDBSetKeyValueEx ( svDB +"\\Engines\\jet", "MaxBufferSize" , REGDB_STRING , "512" , -1 );
RegDBSetKeyValueEx ( svDB +"\\Engines\\jet" , "PageTimeout" , REGDB_STRING , "5" , -1);
RegDBSetKeyValueEx ( svDB +"\\Engines\\jet", "Threads" , REGDB_NUMBER , "3" , -1 );
这个我没有试过,也不知道行不行。应该差不多吧!

5、在注册表里添路径,例如
RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );
RegDBSetKeyValueEx ( "Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\" , "Myexe.exe" , REGDB_STRING , TARGETDIR + "\\Myexe.exe" ,-1 );
我不喜欢这样做,喜欢把路径加入autoexec的Path里。

(九)

在scripts里点右键,会出现function wizard的选项,试一试,很好用的。
改写Autoexec中的Path

改写Path相关的文件操作

FindFile 看看文件是否存在
CreateFile 创建文件
OpenFileMode //打开模式
OpenFile //打开文件
WriteLine //写一行

OpenFileMode(FILE_MODE_APPEND);

if (FindFile("c:\\", "autoexec.bat", svResult) < 0) then //没有,需要create一个
CreateFile(nvFileHandle, "c:\\","autoexec.bat" );
else //有拉,打开他
OpenFile ( nvFileHandle , "C:\\" , "Autoexec.bat" );
endif;

LongPathToQuote (svDir , TRUE );

//如果是长文件名,要加上引号,否则PATH不认的!
//如path=c:\program file;c:\windows一定会出错,应该写成path="c:\program file";c:\windows
//非长文件名加不加都没有关系

WriteLine( nvFileHandle," ");
WriteLine( nvFileHandle,"REM ********ADD BY myexe********");
WriteLine( nvFileHandle ,"Set PATH=" +svDir +";%PATH%"); //加全!!一般来说只有一个work DIR是not enough的
WriteLine( nvFileHandle,"REM ********END OF myexe********");
WriteLine( nvFileHandle," ");
CloseFile(nvFileHandle);


在桌面和开始菜单中添加快捷方式:

都用一个函数,就是:
AddFolderIcon (szProgramFolder, szItemName, szCommandLine, szWorkingDir, szIconPath, nIcon, szShortCutKey, nFlag);

参数:

1)szProgramFolder
FOLDER_DESKTOP
FOLDER_STARTMENU
FOLDER_STARTUP
FOLDER_PROGRAMS
或者
FOLDER_STARTMENU ^ "ACCESSORIES\\GAMES"
等等
现在发现系统变量的好处了吧!参见“使用install shield制作PB6程序的安装盘(五)”

2)szItemName
快捷方式的名字,在Windows 95 和 Windows NT 4.0没有特别的限制
这些“/ \ : ? < > |”是不能用的

3)szCommandLine
一般来讲就是文件全名。后面也可以带命令行参数,比如:"C:\myexe\myexe.exe -a",引号加不加我忘拉,你试试吧!
文件不一定是.exe,任何注册了的东东都可以,比如.txt , .htm , .gif 等等

一般来说,这个命令是反安装命令。
C:\WINDOWS\IsUn0804.exe -f"C:\myexe\Uninst.isu"

4)szWorkingDir
工作路径,一般用""

5)szIconPath
需要显示的icon文件名

6)nIcon
图标号,从0开始,0,1,2,3,……,使用应用程序自带的图标取0就可以拉

7)szShortCutKey
快捷键,比如想输入"Ctrl + F8"就蹦出来。
注意,当快捷键和系统冲突时,自动无效。
一般允许的是" Ctrl + Alt + "+key
例如 "Ctrl + Alt + F8"
或 "Ctrl + Alt + K"
"Alt + "key 好象不行,
"Ctrl + "key 可能可以

8)nFlag 可以或操作
REPLACE 如果原来有,就替代它
RUN_MAXIMIZED 运行时最大化
RUN_MINIMIZED 运行时最小化
NULL 以上一个都不要

注释:
szCommandLine中如果应用程序名是长文件名,必须用引号(单双都行)引起来,文件名是变量的话就用LongPathToQuote函数做一下。
szWorkingDir 和szIconPath不要用LongPathToQuote函数做,InstallShield自动会处理,还是用""比较好!
LongPathToQuote就是------------长文件名加引号!这么简单还要问!

例子:
svResult ="";
if (FindFile (svDir, "XTGL.EXE" , svResult )=0) then //先找一下,因为有可能用户没有选这个部件
svPath = TARGETDIR ^ "xtgl.exe";
LongPathToQuote ( svPath , TRUE ); //很有必要的
AddFolderIcon ( FOLDER_PROGRAMS ^ "我的应用", "系统管理" , svPath , "" , "" , 0 , "" , REPLACE ); //在开始菜单->我的应用->系统管理
AddFolderIcon ( FOLDER_DESKTOP , "系统管理" , svPath , "" , "" , 0 , "Ctrl + Alt + K", REPLACE ); //在桌面上加一个,带快捷键耶!
endif;

下面就是自动反安装,没有必要也装到桌面上吧!
svPath = TARGETDIR ^ UNINST_LOGFILE_NAME; //UNINST_LOGFILE_NAME一般在scripts一开始就定义为:#define UNINST_LOGFILE_NAME "Uninst.isu"
LongPathToQuote ( svPath , TRUE );
AddFolderIcon ( FOLDER_PROGRAMS ^"我的应用" , "卸载" , "c:\\windows\\IsUn0804.exe -f"+svPath ,"" , "" , 0 , "" , REPLACE );
……………………TO BE CONTINUED

回页首


使用install shield制作PB6程序的安装盘(十一)
如果转载,请注明(作者zhhz)请大家支持

请注意,这并不只是在翻译文档,其中被我组织和编辑过,并且有我的一些见解(哈,不一定对)。

用户接口函数是一些比较低层的函数,例如FindWindow,
用户接口函数有时候是很有用的,比如要在背景上放AVI,
但是这些是可要可不要的。

然而用户接口Enable (nConstant)和Disable (nConstant)是很重要的,不得不用

nConstant的参数:
BACKBUTTON 允许/禁止“后退”按钮,缺省是允许的。

BACKGROUND 允许/禁止显示主背景窗口。缺省是允许。
在自动生成的SCRIPTS里,第一行就有 Disable( BACKGROUND ),这是为了防止SetupInstall()造成的闪烁。不信你把它去掉试试。

BACKGROUNDCAPTION 允许/禁止显示主背景窗口标题栏。全屏时没用,缺省是允许。

BITMAP256COLORS 允许/禁止256色模式,在PlaceBitmap里用

CORECOMPONENTHANDLING 允许/禁止中心组件标识。有些文件是和注册表相关的,如ACTIVE X,假设以前有,反装时去掉了这种关联,那么别的程序也不能用拉。如果enable,所有在Corecomp.ini中定义的文件都不会被标识。
16位系统和winnt3.5不支持。

DEFWINDOWMODE 允许/禁止安装运行于窗口模式。

DIALOGCACHE 允许/禁止窗口缓冲技术,可以减少屏幕闪烁。缺省是禁止。

FEEDBACK_FULL 允许/禁止显示进度标尺。当“文件复制”条显示时,自动就显示进度尺了。进度尺就是那个百分之多少多少的东东。

FULLWINDOWMODE 允许/禁止背景窗口处于全屏模式。缺省是允许。

HOURGLASS 允许/禁止鼠标指针为沙漏形状

INDVFILESTATUS 允许/禁止文件拷贝进度,就是显示“copying myexe.exe to c:\myexe\myexe.exe ”,缺省是禁止,快打开吧!

LOGGING 允许/禁止反安装时根据日志进行。不要动。

NEXTBUTTON 允许/禁止“下一步”按钮,缺省是允许的。

SELFREGISTERBATCH 允许/禁止批处理模式登记自动登记文件。我没有研究过。

STATUS 允许/禁止显示文件复制进度条。缺省是允许。

STATUSDLG 允许/禁止显示文件复制进度窗口。缺省是允许。

STATUSOLD 允许/禁止显示文件老的复制进度窗口,是那种没有cancel键的那种。

gxdmm 2001-10-24
  • 打赏
  • 举报
回复
其中几个必须的文件:
  Idapi32.dll:BDE基本函数库
  Blw32.dll:语言驱动函数库
  Idr20009.dll:错误信息库
  Fareast.bll:远东语言驱动程序
  Usa.bll:美国语言驱动程序
  以下文件为根据需要可选:
  如用Paradox,则应选择:Idpdx32.dll
  如用Dbase,则应选择:Iddbas32.dll
  如用Access,则应选择:Iddao32.dll
  如用Ascii,则应选择:Idasci32.dll
  如用TBatchMove,则应选择:Idbat32.dll
  如用Data Repostitory,则应选择:Iddr32.dll
  如用ODBC,则应选择:Idodbc32.dll
  如用BDE DataSet Provider DLL,则应选择:Idprov32.dll
  如用SQL查询,则应选择:Idsql32.dll
  下面我们就以用InstallShield来制作一个Paradox数据库应用系统的安装程序为例:
  1.启动程序设置有关文件目录路径,进入Setup Checklist;
  2.在Set the Visual Design中设置程序名、程序目录、安装程序主窗口等;
  3.在Specify Components and Files中设置Groups and Files项,在Program Files中加入用户的所有程序文件和数据库表文件,以及下列文件:Idbat32.dll、Usa.btl、Idapi.cfg、Charset.cvb、Bantam.dll、BLW32.dll、Idapi32.dll、Fareast.btl、Idpdx32.dll、Idr20009.dll、Idsql32.dll(以上文件必须含目录路径);
  4.在Dialog Boxes中设置所需安装对话框;
  5.在Make Registry Changes中设置Keys项,在HKEY_LOCAL_MACHINE中加入software\borland\blw32和software\borland\database engine两项,并且在blw32值中加入
  “Blapipath ‘以上文件目录’”、“LOCALE_LIB0 ‘以上文件目录’\Fareast.bll”和“LOCALE_LIB1 ‘以上文件目录’\Usa.bll”,在database engine值中加入“Dllpath ‘以上文件目录’”、“Configfile01 ‘以上文件目录’\Idapi.cfg”;
  6.在Specify Folder and Icons中根据实际要求设置有关项目;
  7.在Run Disk Builder中设置安装盘的有关信息;
  8.最后进行Test the Installation和Create Distribution Media即可完成安装程序的制作。
vernal 2001-10-24
  • 打赏
  • 举报
回复
给你个网址,自己下。如果不行,来找我。hopfeel@etang.com
powerbp1.home.sohu.com/index.html

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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