SPY_CQIT

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
//---------------------------------------------------------------------------                                                                        
//    目的:打包完成后调用安装包上级目录下的License.txt和图片资源 
//   GetUpperDir(STRING)
//    获取当前目录的上一级目录  
//    如 srcDir : C:\Program Files\TestDir
//    返回 C:\Program Files
//---------------------------------------------------------------------------
function string GetUpperDir(srcDir)
    NUMBER upperstrlen; 
    string retrunDir,tempDir;
begin 
    retrunDir = "";
    tempDir = srcDir;   
    while (StrFind(tempDir,"\\")>-1)
        StrSub(tempDir,tempDir,StrFind(tempDir,"\\")+1,StrLength(tempDir)-StrFind(tempDir,"\\"));
    endwhile;   
    upperstrlen = StrLength(tempDir);
    StrSub(retrunDir,srcDir,0,StrLength(srcDir)-upperstrlen-1);
    return retrunDir;
end;  

应用:
     szPath=SRCDIR;  (SRCDIR 为安装包绝对路径)
    StrRemoveLastSlash(szPath);  
    szUpperPath = GetUpperDir(szPath); //安装路径的上一级路径
     Enable( BACKGROUND ); 
    PlaceBitmap( szUpperPath ^ "picture\\setup.bmp", 0,0, 0 , FULLSCREEN );  //调用显示图片.
    szLicenseFile = szUpperPath ^ "License.txt";  //调用协议文件
  

使用InstallShield系统变量的缺省值

若InstallShield安装在D盘,Windows系统安装在C盘,测试的安装项目是第一次创建的Blank Setup,则InstallShield系统变量的缺省值如下:
BATCH_INSTALL 0*
COMMONFILES C:\Program Files\Common Files\
ERRORFILENAME --
FOLDER_DESKTOP C:\WINDOWS\Desktop\
FOLDER_PROGRAMS C:\WINDOWS\Start Menu\Programs\
FOLDER_STARTMENU C:\WINDOWS\Start Menu\
FOLDER_STARTUP C:\WINDOWS\Start Menu\Programs\启动\
HINST_INSTALL 0*
INFOFILENAME --
ISRES C:\WINDOWS\TEMP\_ISTMP0.DIR\B3F9AB.DLL*
ISUSER C:\WINDOWS\TEMP\_ISTMP0.DIR\_ISUSER.DLL*
ISVERSION 5.50.136.0
LAST_RESULT 0*
LOGHANDLE 0*
MEDIA DATA
PROGRAMFILES C:\Program Files\
SELECTED_LANGUAGE 9
SRCDIR C:\My Installations\Blank Setup\Media\Default\DiskImages\disk1\
SRCDISK C:
SUPPORTDIR C:\WINDOWS\TEMP\_ISTMP0.DIR\*
TARGETDIR C:\WINDOWS\*
TARGETDISK C:*
UNINST C:\WINDOWS\ISUNINST.EXE
WINDIR C:\WINDOWS\
WINDISK C:
WINSYSDIR C:\WINDOWS\SYSTEM\
WINSYSDISK C:

注:凡是后面有星号(*)的值在不同的安装项目或安装进程中可能会有不同。

相关注释:

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 安装源目录的全路径(此路径并不是setup.exe所在路径,而是安装过程中拷贝到临时文件下的路径)
SRCDISK 安装源目录的盘符
SUPPORTDIR 临时文件路径
TARGETDIR 安装目的目录的全路径
TARGETDISK 安装目的目录的盘符
UNINST unInstallShield程序用的反安装文件全文件名
WINDIR Windows的全路径(c:\windows)
WINDISK Windows位于的盘符
WINSYSDIR Windows\system的全路径(c:\windows\system)
WINSYSDISK Windows\system位于的盘符 
 

 InstallShield Basic MSI工程常见问题解答

原文出处:InstallShield 中文论坛
原文地址:http://installshield.jaron.cn/forum/dispbbs.asp?boardID=17&ID=284510&page=1

1、  问题描述:采用何种安装模式?
实现方法:如果对用户界面等自定义要求不高的话,建议用Basic Msi Project,否则用InstallScript MSI Project。

2、  问题描述:安装后快捷方式为乱码。
实现方法:将简体中文设为默认安装语言后删除English前的勾。
操作步骤:在Installation Designer页面中Installation Information-General Information->String Tables右击Chinese(simplify)在弹出的快捷菜单中选择Make default,回到Project Assistant页面的相应处去掉English前的勾。

3、  问题描述:安装界面的中文全显示为乱码。
产生原因:之前已编译过英文的安装包。
实现方法:在Bulid菜单中的Release Wizard中修改设置再重新编译即可。

4、  问题描述:如何修改系统默认的安装文件夹?
实现方法:在Information-Product Properties中INSTALLDIR右侧的文本框中单击,再单击文本框右侧的 ,在弹出的Set INSTALLDIR对话框中新建目标文件夹,点击OK后,再次点击 选择刚才建好的那个文件夹。点OK 即可将默认的安装目录修改。

5、  问题描述:怎么在开始程序中加上卸载的快捷方式。
实现方法:在Project Assistant页面的Appication Shotcuts中单击左侧的Create an unlinstallation shotcut。

6、  问题描述:安装时怎么使控件自注册。
实现方法:在Project Assistant页面的中右侧选中控件,右击选择Properties在弹出的对话框中勾上Self Register复选框。

7、  问题描述:怎么实现在卸载时有的控件不被删除。
实现方法:直接单击Installation Designer页面,选中Application Data下的Files and Folders,在Destination computer’s folders中选中不要被卸载的组件,右击选择Properties在弹出的对话框中勾上Permanent复选框(若没有复选框可以在organiztion处的setup design处设置 )

8、  问题描述:怎么在Basic MSI Project安装工程中实现安装后运行指定的安装程序。
实现方法:首先在Installation Designer页面的Behavior and Logic中单击InstallScript,右击Files在弹出的快捷菜单中选择New Script file,然后新建相关函数。例如:
#include "ifx.h"
export prototype RunSetIIS(HWND);
function RunSetIIS(hMSI)
   STRING svResult;
begin    
      if(FindFile(INSTALLDIR,"设置IIS.exe",svResult)=0) then
      LaunchAppAndWait (INSTALLDIR^"设置IIS.exe","AUTORUN",WAIT);
   endif;  
end;
然后再在Behavior and Logic中单击Custom Actions, 右击Custom Actions在弹出的快捷菜单中选择Custom Action Wizard在Action Type中选择Run InstallScript code,在Insert into Sequence中的Install Execute Sequence处选择After ISSelRegisterFinalize或者After InstallFinalize都行,其余按向导提示操作。

9、  问题描述:怎么样在安装或卸载过程中停止或开启、重启有关服务。
实现方法:大体操作同8。相关函数LaunchAppAndWait, 以停止win自带的web服务为例:
#include "ifx.h"
export prototype StopWebservice(HWND);
function StopWebservice(hMSI)
begin
  LaunchAppAndWait("","net stop w3svc"+"/S",WAIT);  
end;

10、问题描述:怎么样在卸载后删除残留文件。
实现方法:大体操作同8。相关函数DeleteDir, DeleteFile,注意不要对INSTALLDIR文件夹进行整个删除,以防安装在根目录时这样的删除操作会造成删除整个盘符的所有数据。

11、问题描述:怎么样在安装完成之后创建新文件夹。
实现方法:大体操作同8。相关函数CreateDir。

12、问题描述:怎么使安装包只一个exe文件。
实现方法:在Bulid菜单中单击Release Wizard,在Media Type对话框处选择Network inage-在Release Configuartion对话框处选中Compress all files,在Windows Installer Location,Installscript Engine处选中Extract engine form Setup.exe,其余按向导提示操作。

13、问题描述:安装时提示有的文件正在使用不能被覆盖,怎么解决。
实现方法:单击Installation Designer页面,选中Application Data下的Files and Folders,在Destination computer’s folders处右击选中show compenents,再选中不要被覆盖的任意一个components,右击选择Properties在弹出的对话框中勾上Never Overwrite复选框。或是直接点击Organazation处的components处选择即可.

14、问题描述:怎么让用户选择安装路径。
实现方法:在project Assistant中installationinterview 处,将第三行的yes选上。

15、问题描述:怎么修改对话框左侧和上部的logo图片。
实现方法:在Project Assistant->Installation Interview:在右上角的More options处有个Use custom images on dialogs

16、问题描述:怎么在初始化安装过程时显示公司的logo作为闪屏。
实现方法:在Installation Designer页面的Behavior and Logic->Support Files->Splash Screen处的Language Independent单击,在files列表处右键Insert files,选取一幅bmp图片添加就是。

17、问题描述:怎么使用脚本在安装过程中调用另一个MSI安装程序。
实现方法:以下是函数片段
string szCommand,szCmdLine;
begin
   szCommand = WINSYSDIR^"msiexec.exe";  
   LongPathToShortPath(szCommand);
   szCmdLine =TARGETDIR^"msxmlchs.msi";
   LongPathToShortPath(szCmdLine);
   SdShowMsg("正在安装msxml,请稍候...",TRUE);
   Delay(5);
   if (LaunchAppAndWait( szCommand ,"/i"+szCmdLine,WAIT) < 0) then
      MessageBox("数据文件出现错误",WA RNING);      
   endif;

18、问题描述:怎么设置背景图
      实现方法:以下是函数片段
Enable( BACKGROUND );      
    GetExtents ( nvDx , nvDy);
    if(nvDx=800) then
      PlaceBitmap ( SUPPORTDIR ^ "bbrd1.bmp" , 1 , 800 , 600 ,CENTERED);
    elseif(nvDx=1024) then        
      PlaceBitmap ( SUPPORTDIR ^ "bbrd2.bmp" , 1 ,1024 , 768 ,CENTERED);
    elseif(nvDx=1152) then
      PlaceBitmap ( SUPPORTDIR ^ "bbrd3.bmp" , 1 , 1152 , 864 ,CENTERED);
    endif;

 

 

posted on 2012-10-25 14:02  SPY_CQIT  阅读(481)  评论(0)    收藏  举报