InstallShield如何添加或修改path环境变量 ( 积分: 100 )

  • 主题发起人 主题发起人 king_wjb
  • 开始时间 开始时间
K

king_wjb

Unregistered / Unconfirmed
GUEST, unregistred user!
请问在InstallShield中如何添加或修改path环境变量?
 
请问在InstallShield中如何添加或修改path环境变量?
 
你自己做一个DLL文件来修改path环境变量
再在InstallShield这个DLL,在安装的时候来修改。
如何在InstallShield中使用自己的DLL
---- 作为一个开发人员,当我们为用户开发好应用系统时,就要包装分发自己的程序给最终用户。一般情况下,相应的开发系统中也提供了相应的分发工具,例如Visual Basic6.0中的 [Package &
Deployment 向导] ,但是有的开发系统提供的都是英文版的,为了适应中国用户,我们需要选择一款易学易用,界面友好的工具软件,而 InstallShield 就是最好的工具之一。在此我选用的是 InstallShield 5.1 远东专业版本,此版本可以制作出支持多种语言界面的安装程序。
---- InstallShield 的功能相当强大,能够对系统和安装需要提供丰富的函数支持,有足够灵活的界面控制支持,而且其脚本语言特点与Visual C++的代码极其相似,非常适合使用Visual C++的开发者使用。
---- 但是,在某些情况下,InstallShield不能提供能完成某种特殊功能的相应函数,这时需要我们自己开发出能够完成此功能的函数,然后放在InstallShield中调用,达到与其完美的结合,DLL是最佳的选择。
---- 本文以一个实例介绍了如何生成自己的DLL,以及如何在 InstallShield中调用。
一、制作DLL:
---- 此动态库函数主要是显示出传给自己的字符串,并做了改动返回(如果要在InstallShield中使用改动过的字符串,在InstallShield中原型声明时,用POINTER对应LPSTR),并且根据传入的数据返回不同的返回值,用户只要根据此原理实现自己的函数即可:
---- 1、在Visual C++中的 New 中选择 MFC AppWizard(DLL) 工程类型,输入工程名Setup00,点OK,直接 Finish 即可。然后在ClassView中,用鼠标右击Csetup00App,选择Add Member Function…,在Function Type中输入int,在Function Declaration中输入Test(LPSTR lpszStr, int iVal),Access类型选择Public,然后输入下面函数体。 Setup00.DLL的Test函数例码:
int CSetup00App::Test(LPSTR
lpszStr, int iVal) { AFX_MANAGE_STATE(AfxGetStaticModuleState());
AfxMessageBox(lpszStr);
//如果想改变字符串,用下面方法 strcpy(lpszStr,_T("动态库已经变了字符串"));
if (iVal == 1) return 1;
else

return 2;
}
---- 2、在FileView中,从Source Files中双击 Setup00.def,在代码;
Explicit exports can go here的下一行输入: Test @1
---- 3、选择成Release版本,从 Build 菜单上选择 Build Setup00.dll即可。
二、在 InstallShield 中使用实例:
---- 1、在 Setup Files Pane 中的 Language Independent/Operating System Independent下用 Insert Files 命令添入 Setup00.dll 。这样,你的动态库就可以在制作安装盘时被压入 _user1.cab 中,
---- 如果你没有把DLL放至_user1.cab中,你可以把DLL和你的应用程序放到一块,然后从目标系统中调用。但是,如果你已经做了,你必须指明你要使用的DLL的位置以使安装程序能够找到。而且你必须确信在调用DLL之前它已经被拷贝到预定目录之下。
---- 2、在脚本程序的程序段中,添加下面代码:
// 声明setp00.dll中的Test函数原型:
prototype INT Setup00.Test( STRING,INT);
---- //如果想要在DLL中改变字符串值,需要将STRING声明成按指针传递,如下:
//prototype INT Setup00.Test( BYREF
STRING,INT);
STRING szDLL, svString;
INT nValue;
POINTER psvString;
BOOL bDone;
NUMBER nResult;
program szDLL = DLL_FILE;
/*--------------------------------------*/
* Load SETUP00.DLL into memory. /*--------------------------------------*/ nResult
= UseDLL (szDLL);
if (nResult = 0) then
MessageBox ("动态库调入内存成功!", INFORMATION);
else
MessageBox ("动态库调入内存失败!", INFORMATION);
abort;
endif;
AskText("请输入示例字符串:",
"这是示例字符串", svString);
nValue = StrLength(svString);
nResult = Test(svString,nValue);
// 显示调用Setup00.dll中Test函数后的字符串 SprintfBox(INFORMATION, "调用动态库", "
调用后的字符串为:%s
", svString);
if (UnUseDLL (szDLL) <
0) then
MessageBox("卸载动态库失败,仍在内存中!", SEVERE);
else
MessageBox("从内存中卸载动态库成功!", INFORMATION);
endif;
三、请使用下面参数类型对照表,在原型声明和外部函数之间进行数据类型匹配。
( 对照表传不上来,呵呵)
---- 在安装程序调用动态库函数时需要遵循三个规则:
---- 1、动态库函数的名字最长为33个字符;InstallShield函数名最长为80个字符。
---- 2、InstallShield在调用DLL时,不能接受组合参数(就是说一个大于由个字节的参数),然而参数可以是一个指向组合结构的指针。
---- 3、在16位平台上应调用16位DLL;而在32位平台上应调用32位DLL。
---- 本例在 WIN98,Visual C++5.0,Visual C++6.0,InstallShield5.1中调用通过。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1815238
用InstallShield Express打包程序问题 ,救命!!!送100分!!!
 
在DELPHI中如何修改环境变量的值?
 
晕,你说的环境变量是不是说自动批处理文件、配置文件等呀
它们都是文本文件,你找本delphi关于文件操作方面书看看
 
谢谢,我已经找到了。
 
接受答案了.
 
后退
顶部