CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

怎样在InstallShield制作的安装文件中写一个磁盘文件?

楼主Skeleton(一堆骨头)2002-05-28 16:05:37 在 VB / 基础类 提问

我想在InstallShield打包的安装文件中添加一个页面  
  让用户输入一些信息  
  然后将这些信息存到一个磁盘文件中  
  如何实现? 问题点数:50、回复次数:5Top

1 楼PerfectCK()回复于 2002-05-28 16:22:34 得分 25

给你一个函数,参数是你要写的字符串  
   
  function   WriteFile(LogString)  
          STRING   LogFileName,svResult,svResult2,CKSresult;    
          NUMBER   nvResult,CKNresult;  
          HWND   LogFileWND;  
          NUMBER   nResult;  
      begin                      
          nResult=FindFile   ("这里是目标目录","这里填写你的文件名称",LogFileName);  
          if   nResult<0   then//没有则创建文件          
                  OpenFileMode   (FILE_MODE_APPEND);  
                  CreateFile(LogFileWND,"这里是目标目录","这里填写你的文件名称");  
                  CloseFile(LogFileWND);  
          endif;                                                            
          OpenFileMode   (FILE_MODE_APPEND);  
          OpenFile   (LogFileWND,"这里是目标目录","这里填写你的文件名称");  
          //写入字符串  
          GetSystemInfo   (DATE,   nvResult,   svResult);          
          GetSystemInfo   (TIME,   nvResult,   svResult2);  
          LogString=svResult+"       "+svResult2+"       "+LogString;  
          WriteLine(LogFileWND,LogString);    
          CloseFile(LogFileWND);  
      end;Top

2 楼Skeleton(一堆骨头)回复于 2002-05-30 10:46:10 得分 0

能不能说的详细点  
  我第一次用InstallShield  
  只用Visual   Basic   Project   Wizard打包过几个工程  
  连怎么添加新的页面都不会  
  多谢!  
  Top

3 楼zhjin2000(鸟)回复于 2002-05-31 11:59:17 得分 25

在你的脚本里可以找到以下的这个位置  
   
  //////////////////////////////////////////////////////////////////////////////  
  //  
  //   函数:   OnFirstUIAfter  
  //  
  //   事件:   FirstUIAfter   event   is   sent   after   file   transfer,   when   installation    
  //   is   run   for   the   first   time   on   given   machine.   In   this   event   handler    
  //   installation   usually   displays   UI   that   will   inform   end   user   that  
  //   installation   has   been   completed   successfully.  
  //  
  ///////////////////////////////////////////////////////////////////////////////  
  Function   OnFirstUIAfter()  
  STRING   szTitle,szTitle1,szMsg1,   szMsg2,   szMsg3,szField1,svEdit1,   szOption1,   szOption2,szCmdLine;  
  NUMBER   bOpt1,   bOpt2;  
  //写文件  
  STRING   LogFileName,svResult,svResult2,CKSresult,Fname;    
  NUMBER   nvResult,CKNresult;  
  HWND   LogFileWND;  
  NUMBER   nResult,nResult1;  
  begin      
  //写文件  
          szTitle1     =   "SQLServer服务器名称";  
          szMsg3         =   "请输入您要连结的SQLServer服务器名称";  
          szField1   =   "服务器名称:";  
          svEdit1     =   "Server";    
          Fname       =   "myinfo.dat";  
          nResult1=FindFile   (TARGETDIR   ,Fname,Fname);  
          if   nResult1<0   then//没有则创建文件          
                  OpenFileMode   (FILE_MODE_APPEND);  
                  CreateFile(LogFileWND,TARGETDIR,Fname);  
                  CloseFile(LogFileWND);  
          endif;                                                            
          OpenFileMode   (FILE_MODE_APPEND);  
          OpenFile   (LogFileWND,TARGETDIR,Fname);  
          //写入字符串  
        nResult=SdShowDlgEdit1   (szTitle1,   szMsg1,   szField1,     svEdit1);  
        if   nResult   <   0   then  
                  MessageBox   ("SQLServer服务器名称注册失败!",     SEVERE);  
        endif;      
          GetSystemInfo   (DATE,   nvResult,   svResult);          
          GetSystemInfo   (TIME,   nvResult,   svResult2);  
          svEdit1=svResult+"       "+svResult2+"       "+svEdit1;  
          WriteLine(LogFileWND,svEdit1);    
          CloseFile(LogFileWND);  
           
  bOpt1   =   FALSE;  
  bOpt2   =   FALSE;  
  szMsg1   =   "1234"  
  szMsg2   =   "请浏览本主机网络服务器上的   web   虚拟目录\n\n   例:\n   http://Localhost/web/index.asp";  
  szOption1   =   "";  
  szOption2   =   "";  
  szTitle   =   "实物借阅安装完成";  
  SdFinishEx(szTitle,szMsg1,szMsg2,szOption1,szOption2,bOpt1,bOpt2);  
   
  return   0;  
  end;  
   
   
   
   
   
  附函数说明:  
   
  FindFile  
   
  语法:FindFile   (szPath,   szFileName,   svResult);  
   
  说明:FindFile函数在一个目录中查找一指定文件。InstallShield在参数svResult返回第一个匹配的文件。  
   
  参数:  
   
  szPath  
   
  指定要查找的目录名。该目录下的子目录不被查找。  
   
  szFileName  
   
  指定要查找的文件名。该参数允许通配符。  
   
  svResult  
   
  返回与szFileName匹配的第一个文件的文件名。该参数包含未限定文件名(也就是,不包括驱动器指示符和路径)。  
   
  返回值:  
   
  0:表明函数成功找到并返回指定文件。  
   
  <   0:表明函数未能找到文件。  
   
  注解:  
   
  ·该函数只查找指定子目录。它不查找整个磁盘或目录树。  
   
  CreateFile  
   
  语法:CreateFile   (nvFileHandle,   szPath,   szFileName);  
   
  说明:CreateFile函数创建一个新文件。如果相同名的文件已经存在,CreateFile改写它。在你用CreateFile创建一个文件前,你必须用OpenFileMode设置文件方式。  
   
          CreateFile将新创建的文件打开为读/写(二进制文件)或添加(文本文件)方式,因此你可以使用其它函数,如GetLine,   ReadBytes,   WriteLine和   WriteBytes.来从文件中读或写到文件中。  
   
          除了读/写或添加方式,所有新创建文件自动打开为OF_SHARE_DENY_NONE方式。这意谓着文件被打开为不拒绝其它程序对它的读或写。这种方式的根段记录在Windows   OpenFile   API中。当你结束从一个文件读或对它写时,你必须使用CloseFile函数来关闭该文件。  
   
  参数:  
   
  nvFileHandle  
   
  返回新文件的句柄。  
   
  szPath  
   
  指定新文件创建所在的子目录的全限定路径。  
   
  szFileName  
   
  指定创建的文件的文件名。  
   
  返回值:  
   
  0:表明函数成功创建新文件。  
   
  <   0:表明函数未能创建新文件。  
   
  注解:  
   
  ·CreateFile创建一个新文件并把它打开以便你可以从新文件中读或写到新文件中。为写到一个现存文件中,你必须首先用OpenFileMode   和OpenFile函数以FILE_MODE_APPEND方式打开文件。  
   
  ·当操作日志被激活时,CreateFile的函数操作不存入到卸载记录中。如果你想要一个由CreatFile创建的文件被存入到卸载记录中,则当存入功能被激活时,使用XcopyFile传输一个启动程序文件(以你要的文件名)到目标系统。你用Enable   和Disable函数激活和禁用存入功能。当存入功能被激活时,XcopyFile操作被存入,启动程序文件被存入后,你可以使用CreatFile和其它文件相关函数来写或改写被存入的启动程序文件。文件名必须保持不变否则它不会在卸载记录中找到。Top

4 楼zhjin2000(鸟)回复于 2002-05-31 12:04:45 得分 0

可以用AskText函数代替以上SdShowDlgEdit1   函数让用户输入比较多的数据  
   
  AskText  
   
  语法:AskText   (szQuestion,   szDefault,   svResult);  
   
  说明:AskText函数显示一个对话框,它包括一个静态文本区和一个编辑框。参数szQuestion指定静态文本区的缺省文本;参数szDefault指定编辑框的缺省文本。该对话框的缺省标题是输入信息Enter   Information。为改变标题栏的内容,在调用AskText前调用SetDialogTitle。  
   
  参数:  
   
  szQuestion  
   
  指定要显示的问题或声明。如果该参数位置的字符串长度超过静态文本区宽度,一个或多个行分隔符将会被插入该字符串使得它在对话框多行显示。如果愿意,用户也可以自己通过插入换行符(\n)手动格式化该字符串。该参数没有一个缺省值。  
   
  szDefault  
   
  指定编辑区的缺省文本。  
   
  svResult  
   
  当Next按钮被用来关闭对话框时返回由最终用户输入的文本。如果用户按下Back按钮,svResult值将不可预测。因此,如果用户在szDefPath和svResultPath使用相同的变量,那么需确保当AskPath的返回值为BACK时重初始化该变量。  
   
  返回值:  
   
  NEXT   (1):表明Next按钮被按下。  
   
  BACK   (12):表明Back按钮被按下。  
   
  注解:  
   
  ·用户在svResult传递的字符串变量必须足够大以适应输入到编辑区的文本。因此,用户必须使用自动调节大小的方法来声明变量。  
   
  ·必要时,编辑区将会滚动来以适应一个长字符串。  
   
  Top

5 楼Skeleton(一堆骨头)回复于 2002-06-06 13:20:48 得分 0

这几天不能上网  
  问题我已经解决了  
  不过还是要感谢两位的帮助  
  Top

相关问题

  • 哪位知道InstallShield 6.22安装包的文件安装顺序?
  • installshield 8+.net制作安装文件后安装的问题(.net1.1)
  • installshield 8+.net制作安装文件后安装的问题(.net1.1)
  • 安装文件
  • 重新覆盖安装系统后,有些文件和文件夹无法访问,说是磁盘未满或写保护!
  • InstallShield怎样生成单一的安装文件?
  • 关于用InstallShield Express制作安装文件的请教!!!
  • 如何用Installshield生成只一个安装文件
  • InstallShield 6做的安装如何生成为可执行文件
  • 磁盘I/O和磁盘文件的关系?

关键词

  • 文件
  • installshield
  • 安装
  • 信息
  • 磁盘
  • svresult
  • nresult
  • logfilename
  • number

得分解答快速导航

  • 帖主:Skeleton
  • PerfectCK
  • zhjin2000

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo