向导界面中:
Architecture 定义安装组件(eg: 组件1,组件2)
APP files 需要安装的文件(是要拷贝到安装后的目录里的 eg: 选择下拉菜单中的Feature,然后选文件夹或者文件)
//兼容性助手对话框[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility //Assistant\Persisted]
//"%Programfiles%\\InstallShield Installation Information\\PRODUCT_GUID\\Setup.exe"=dword:00000021
//"D:\\SRCDIR\\Setup.exe"=dword:00000021
//设计界面中:
//SetupTypes 每种安装方式需要哪些组件(EG:完全安装:组件1,组件2;自定义安装:组件1)
http://lou4.blog.sohu.com/100599162.html
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
INFOFILENAMEInstallShield 创建的备份文件全文件名
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位于的盘符
拷贝文件到SUPPORTDIR(临时路径),一般需要拷贝的是EULA文件(根据kernel32.GetUserDefaultLCID()返回的LCID加载不同的EULA文件。后附 LCID 对应表),安装前需要加载的DLL文件,需要运行的EXE文件等
SUPPORTDIR是由InstallShield生成的安装程序用来存放临时文件的地方。大家都知道InstallShield中将待安装程序的大部分程序文件都压缩保存起来,在安装的过程中,首先要解压到SUPPORTDIR中,然后再开始安装。这个过程本身称为Move Data,在它之前有FirstUIBefore / MaintUIBefore / UpdateUIBefore等事件。
现在我们的问题是,如果在上面这三个事件中,我们需要调用安装包中的一个程序怎么办?这个时候程序文件还没有被解压出来,在客户机上找不到我们需要的程序。
办法很简单:在Installer Designer页上,找Behavior and Logic ->Support Files/BillBoards,在中间一栏中点击Support Files->Language Independent(或任意一种语言),在右边一栏中就可以看到SUPPORTDIR初始化的文件列表了,在这里点击右键选Insert File,把我们需要调用的程序加入到SUPPORTDIR中,这样,就可以在Move Data之前通过下面的语句访问这个程序了:
LaunchAndWait(SUPPORTDIR ^ "<program name>.exe", "<parameters>", WAIT);
当然,如果有依赖DLL,也要一起加进来。