你应该买本书看,installShield内容很多,不看书是不行的.

解决方案 »

  1.   

    既然安装了InstallShield5,VC集成环境的工具菜单中就会出现这一项,你打开你的工程,然后选中共句菜单的InstallShield5,根据提示一步一步来,就会生成一个InstallShield工程。你可以不加改动,直接使用Media想到进行打包,然后按下F5就可以开始安装了。但这时的功能很简单,你可以按你的要求把脚本文件改动一下,如在桌面上生成快捷方式等。脚本语言和C语言差不多,很简单。
      

  2.   

    贴一篇:
    InstallShield脚本语言的编写
     
    蒋燚  
     
        InstallShield脚 本 语 言 是 类 似 C语 言 , 利 用 InstallShield的 向 导 或 模 板 都 可 以 生 成 基 本 的 脚 本 程 序 框 架 , 可 以 在 此 基 础 上 按 自 己 的 意 愿 进 行 修 改 和 添 加 。 
        一 .基 本 语 法 规 则 
         1.变 量 
         BOOL 布 尔 型 值 为 TRUE(1)或 FALSE(0) 
         CHAR 字 符 型 一 字 节 长 的 (8bit)的 字 符 
         HWND 窗 口 句 柄 用 来 存 放 窗 口 句 柄 
         INT 整 型 两 字 节 长 的 整 数 
         LIST 列 表 型 指 向 InstallShield列 表 , 用 ListCreate和 ListDestroy 
         LONG 扩 展 数 值 型 
         LPSTR 扩 展 指 针 
         NUMBER 数 值 型 存 放 四 字 节 长 的 数 值 , 范 围 从 -2147483648到 +2147483647 
         POINTER 指 针 型 
         SHORT 短 数 值 型 
         STRING 字 符 串 型 十 分 类 似 VC中 的 LPCTSTR 
          变 量 如 同 标 准 的 C语 言 , 在 使 用 前 需 要 事 先 声 名 。 变 量 通 常 在 两 个 位 置 进 行 声 名 , 一 是 主 程 序 外 部 , 这 样 的 变 量 为 全 局 变 量 , 二 是 各 函 数 的 变 量 声 名 区 , 这 样 的 变 量 是 局 部 变 量 。 
         
         
         2.操 作 符 
         一 般 的 与 C语 言 相 同 操 作 符 , 在 这 里 不 做 详 解 , 以 下 主 要 介 绍 比 较 特 殊 的 操 作 符 , 
         (1) + , - , * , / 
         以 上 四 个 操 作 符 与 C语 言 中 意 义 和 用 法 都 相 同 。 
         
         (2) && 
         与 操 作 , 与 C语 言 中 用 法 相 同 , 例 : x1 && x2 
         
         (3) || 
         或 操 作 , 与 C语 言 中 用 法 相 同 , 例 : x1 || x2 
         
         (4) ! 
         非 操 作 , 与 C语 言 中 用 法 相 同 , 例 : !x1 
         
         (5) * 
         指 针 操 作 , 类 似 C语 言 中 的 * 
         
         (6) & , | , ^ , ~ , << , >> 
         分 别 为 位 与 , 位 或 , 按 位 异 或 , 按 位 取 反 , 左 移 和 右 移 , 其 意 义 和 用 法 都 与 C语 言 中 基 本 相 同 。 
         
         (7) . 
         该 操 作 符 用 于 结 构 , 用 来 得 到 结 构 的 子 项 , 与 Delphi的 . 用 法 类 似 , 例 如 : 
         typedef SETTINGSREC 
         begin 
         BOOL bSwitchOn; 
         STRING szMssg[255]; 
         INT nVal; 
         
         end; 
         SETTINGSREC settings; 
         
         program 
         settings.bSwitchOn = FALSE; 
         settings.szMssg = "Off"; 
         settings.nVal = 0; 
         (8) = 
         既 可 作 为 赋 值 号 , 同 时 也 做 等 于 符 , 例 如 : 
         str1 = "String"; 
         if str1="String" then 
         endif; 
         
         (9) & 
         取 地 址 符 , 与 C语 言 用 法 类 似 。 
         
         (10) < , > , = , <= , >= , != 
         分 别 表 示 小 于 , 大 于 , 等 于 , 小 于 等 于 , 大 于 等 于 , 不 等 于 
         
         (11) + , ^ , % 
         用 于 字 符 串 的 操 作 。 
         
         (12) -> 
         结 构 指 针 , 与 C语 言 中 用 法 类 似 。 
         
         (13) @ 
         用 于 得 到 Resource窗 口 中 定 义 的 字 符 串 , 例 : 
         szReferenceFile = svDir ^ @PRODUCT_KEY; 
         
         
         3.函 数 
         InstallShield的 函 数 使 用 前 同 样 需 要 声 名 , 函 数 的 参 数 传 递 方 式 十 分 类 似 C语 言 , 例 如 下 面 的 函 数 声 名 : 
         prototype HandleMoveDataError( NUMBER ); 
         
        该 声 名 中 函 数 名 为 HandleMoveDataError, 传 递 一 个 NUMBER类 型 的 参 数 。 调 用 该 函 数 时 也 基 本 与 C语 言 中 相 同 。 
         函 数 体 的 标 准 格 式 为 : 
        function functionname(nResult) 
        // 函 数 变 量 声 名 区 
        begin 
        // 程 序 区 
        end; 
        通 常 的 函 数 返 回 一 个 NUMBER型 的 数 。 
         
          4.主 程 序 结 构 
         主 程 序 以 program开 始 , 以 endprogram结 尾 , 
         
         
        二 .框 架 程 序 的 基 本 结 构 
         程 序 开 始 为 函 数 与 变 量 的 声 明 区 
         通 过 向 导 建 立 的 框 架 程 序 包 含 以 下 一 些 主 函 数 : 
         prototype ShowDialogs(); 
         // 显 示 安 装 向 导 对 话 框 
         
         prototype MoveFileData(); 
         // 移 动 文 件 数 据 
         
         prototype HandleMoveDataError( NUMBER ); 
         // 移 动 数 据 出 错 处 理 
         
         prototype ProcessBeforeDataMove(); 
         // 移 动 文 件 数 据 前 的 处 理 
         
         prototype ProcessAfterDataMove(); 
         // 移 动 文 件 数 据 后 的 处 理 
         
         prototype SetupRegistry(); 
         // 安 装 注 册 , 用 户 可 在 此 加 入 一 些 代 码 , 通 常 用 于 对 注 册 表 的 操 作 
         
         prototype SetupFolders(); 
         // 安 装 生 成 快 捷 方 式 , 通 常 用 户 可 在 此 加 入 生 成 快 捷 方 式 的 代 码 
         
         prototype CleanUpInstall(); 
         // 安 装 完 成 后 清 除 临 时 文 件 
         
         prototype SetupInstall(); 
         // 安 装 的 实 际 过 程 
         
         prototype SetupScreen(); 
         // 设 置 安 装 过 程 的 屏 幕 显 示 ( 包 括 背 景 颜 色 , 字 体 等 ) 
         
         prototype CheckRequirements(); 
         // 检 查 安 装 需 求 ( 包 括 硬 盘 空 间 , 操 作 系 统 平 台 等 ) 
         
         prototype DialogShowSdWelcome(); 
         // 显 示 “ 欢 迎 ” 对 话 框 窗 口 
         
         prototype DialogShowSdLicense(); 
         // 显 示 许 可 信 息 的 对 话 框 
         
         prototype DialogShowSdRegisterUserEx(); 
         // 显 示 用 户 安 装 注 册 的 对 话 框 
         
         prototype DialogShowSdAskDestPath(); 
         // 显 示 “ 安 装 路 径 选 择 ” 对 话 框 
         
         prototype DialogShowSdSetupType(); 
         // 显 示 “ 安 装 类 型 选 择 ” 对 话 框 
         
         prototype DialogShowSdComponentDialog2(); 
         // 当 用 户 选 择 “ 定 制 ” 安 装 时 , 用 于 显 示 供 用 户 选 择 的 组 件 的 对 话 框 
         
         prototype DialogShowSdSelectFolder(); 
         // 显 示 快 捷 方 式 文 件 夹 选 择 的 对 话 框 
         
         prototype DialogShowSdFinishReboot(); 
         // 显 示 “ 安 装 完 成 重 启 动 ” 对 话 框 
         
         
        编 程 实 例 : 
        1.怎 样 在 进 度 条 左 上 角 显 示 当 前 安 装 的 文 件 
         在 function SetupScreen()中 加 入 以 下 语 句 
         Enable( INDVFILESTATUS ); 
         
        2.怎 样 改 变 窗 口 背 景 色 
         SetColor( BACKGROUND, **** )函 数 可 以 改 变 窗 口 背 景 色 , 在 适 当 的 位 置 加 上 它 即 可 , 其 中 第 二 个 变 量 可 以 为 以 下 值 : 
         BK_BLUE BK_MAGENTA BK_PINK BK_YELLOW 
         BK_GREEN BK_ORANGE BK_RED 
         以 上 几 种 为 渐 变 色 
         BK_SOLIDBLACK BK_SOLIDMAGENTA BK_SOLIDRED 
         BK_SOLIDBLUE BK_SOLIDORANGE BK_SOLIDWHITE 
         BK_SOLIDGREEN BK_SOLIDPINK BK_SOLIDYELLOW 
         同 时 第 二 个 参 数 也 可 以 用 RGB来 描 述 , 如 SetColor( BACKGROUND, RGB(0,0,255) ) 
         
        3.怎 样 在 InstallShield5.0以 下 版 本 建 立 快 捷 方 式 
         在 InstallShield5.1以 上 版 本 可 以 可 以 在 Resource窗 口 中 建 立 , 而 在 以 前 的 版 本 必 须 用 程 序 解 决 该 问 题 , 如 果 现 在 有 一 文 件 RegPad.exe( 安 装 路 径 为 用 户 选 定 的 ) , 给 该 程 序 在 “ 开 始 ” ->“ 程 序 ” 中 加 一 个 快 捷 方 式 , 具 体 实 现 程 序 如 下 : 
         function SetupFolders() 
         NUMBER nResult; 
         STRING svResult,szCommand; 
         STRING szName; 
         
         begin 
         szName = "RegPad.exe"; 
         szCommand = TARGETDIR ^ szName ; 
         LongPathToQuote ( szCommand , TRUE ); 
         AddFolderIcon ( FOLDER_PROGRAMS ^"RegPad1.0Beta","RegPad" , 
         szCommand , TARGETDIR , "" , 0 , "" , REPLACE ); 
         
        4.怎 样 控 制 用 户 序 列 号 
         在 向 导 生 成 的 框 架 程 序 中 , 定 义 了 一 个 STRING型 的 全 局 变 量 svSerial, 在 SdRegisterUserEx()结 束 时 将 给 该 值 赋 上 用 户 输 入 的 序 列 号 , 你 对 该 变 量 进 行 判 断 即 可 。 
         
        5.怎 样 控 制 重 新 启 动 计 算 机 
         只 需 加 入 以 下 语 句 
         System ( SYS_BOOTWIN ); 
         
        6.怎 样 给 Autoexec.bat或 Config.sys加 入 语 句 
         以 下 程 序 给 Autoexec.bat加 入 一 行 语 句 
         OpenFileMode ( FILE_MODE_APPEND ); 
         OpenFile (nvFileHandle, "C:\\", "Autoexec.bat"); 
         WriteLine ( nvFileHandle , "SET PATH=%PATH%;C:\\ORAWIN95\\BIN" ); 
         
        7.怎 样 在 安 装 结 束 时 允 许 用 户 选 择 是 否 打 开 Readme文 件 
         假 定 Readme.txt文 件 已 经 复 制 到 目 标 路 径 , 以 下 程 序 将 显 示 一 个 复 选 框 , 如 果 用 户 选 择 了 , 则 用 记 事 本 打 开 Readme.txt。 
         function DialogShowSdFinishReboot() 
         NUMBER nResult, nDefOptions; 
         STRING szTitle, szMsg1, szMsg2, szOption1, szOption2,szPathls; 
         NUMBER bOpt1, bOpt2; 
         
         begin 
         if (!BATCH_INSTALL) then 
         bOpt1 = TRUE; 
         bOpt2 = FALSE; 
         szMsg1 = ""; 
         szMsg2 = ""; 
         szOption1 = "阅 读 Readme文 件 "; 
         szOption2 = ""; 
         nResult = SdFinish( szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2 ); 
         
         if bOpt1 = TRUE then 
         CopyFile ( "Readme.txt" , "Readme.txt" ); 
         LaunchApp ( WINDIR^"Notepad.exe" , TARGETDIR^"Readme.txt" ); 
         endif; 
         
         return 0; 
         endif; 
         .......... 
         
        8.如 何 指 定 默 认 路 径 
         在 function SetupInstall()中 修 改 以 下 代 码 , 如 默 认 目 录 改 为 C:\JttMis, 见 以 下 修 改 的 代 码 
         if (bIs32BitSetup) then 
         svDir = WINDISK ^ "Jttmis"; 
         else 
         svDir = WINDISK ^ "Jttmis"; // use short names 
         endif; 
         
         TARGETDIR = svDir; 
      

  3.   

    我靠!!!!累不累呀!!!InstallShield6.0有买的,便宜一点的才15元,
    我刚买了,还可以
      

  4.   

    15元太贵了吧.VC开发包中自带了INSTALLSHIELD6.0
      

  5.   

    to greatll,非常感谢,可是我现在怎么不能给别人加分了呢