20180125

  • script的结构

    包括声明和函数块。声明可以在函数声明之前或者在函数语句和begin语句之间出现。

  • 声明

    每一个脚本都以全局数据声明为开始。此处定义常量(类似于C语言中的宏定义),声明每一个全局变量以及即将使用的用户定义的函数。

    // Constant definitions#define PRODUCT "InstallShield"#define LIMIT    100// Variable declarationsCHAR  cVal;NUMBER nVal;STRING szName;
    // Function declarationsprototype DisplayMsg (NUMBER, STRING);prototype GetName (BYREF STRING);
  • 函数块

    以prototype语句生命过的所有函数必须在函数块中定义,在endprogram关键字之后

    其他的全局数据声明可以在功能块中,在endprogram语句和第一个函数声明之间或者在函数声明之间进行。 但是,在功能块中声明的数据仅对数据声明后定义的函数可见。

  • 语法符号规则

    分号结尾;

    define and #include 不需要分号结尾;

    关键字诸如program, endprogram, 和begin 等被置于单独行,不需要标点符号;

    函数起始行不需要标点符号;

    标签诸如start: 或者startthere: 以冒号结尾。(目前还没搞懂这里)

    在括号内包含参数列表。用逗号分隔多个参数。

  • 注释

    和C语言一样

  • 空格

    InstallScript 不识别空白字符(spaces and tabs, carriage returns)

  • 匈牙利命名法

    For example, iPointSize denotes an integer variable, while szFileName indicates
    a string variable.

    变量参数命名:第一个字母代表参数类型,v代表必须是变量,不能是常数:szPath可以是字符串常量,而svDir必须是字符串变量。

    详见下表:

    前缀表:

Prefix Data Type When Used in Function Syntax
b Boolean (BOOL) Boolean constant, literal, or variable.
bv Boolean (BOOL) Boolean variable only. Constants and literals not allowed.
c Character (CHAR) Character constant, literal, or variable.
const Constant Constant or literal. Variables not allowed.
h Handle (HWND) Handle variable.
i Integer (INT) Integer constant, literal, or variable.
l Long integer (LONG) Long integer constant, literal, or variable.
lv Long integer (LONG) Long integer variable only. Constants and literals not allowed.
list List (LIST) List variable.
n Number (NUMBER) Number constant, literal, or variable.
nv Number (NUMBER) Number variable only. Constants and literals not allowed.
p Pointer (POINTER) Pointer variable.
pstruct Pointer to a defined structure type Not used.
s Short integer (SHORT) Short integer constant, literal, or variable.
sz String (STRING) String constant, literal, or variable.
sv String (STRING) String variable only. Constants and literals not allowed.
struct Defined structure type Not used.

- 转义字符

Escape Sequence Performs the Following Action
\n Inserts a line feed.
\’ Inserts a single quotation mark in the string.
\” Inserts a double quotation mark in the string.
\r Inserts a carriage return only. Does not insert a line feed.
\t Inserts a tab character.
\ooo Indicates an ASCII character—not an integer—in octal notation.
\ Inserts a backslash.

- if语句

c
if (condition) then
// statements to be executed if condition is true
endif;

c
if (FunctionA (ParameterOne) < 0) then
// Statements to handle the failure
else
// Statements when the function succeeds
endif;

  • while语句

    nCount = 1;
    while (nCount < 5)
    MessageBox ("This is still true.", INFORMATION);
    nCount = nCount + 1;
    endwhile;
  • for…endfor

      for j = 20 downto 10 step 5MessageBox ("This appears three times.", INFORMATION);endfor;
      for iCount = 1 to 10MessageBox ("This appears ten times.", INFORMATION);endfor;
      for j = 20 downto 10 step 5MessageBox ("This appears three times.", INFORMATION);endfor;
  • 数据类型

    有的数据类型支持大小写,举例:

    binary
    BINARY

    ​char
    ​CHAR

    ​int
    ​INT

  • 函数

    InstallShield 支持三种函数:

Function Type Description
Built-in functions Functions supplied by InstallShield or included for Sd dialogs.
User-defined functions Functions that you create.
DLL-called functions Functions that you can call in a DLL.

重点关注一下dll中的函数调用,dll可以有很大的灵活性。

  • 使用内置函数

    可以在Built-In Functions by Category找到适合需求的函数。

  • minor upgrade制作

    只需要修改product version就可以了;

  • major upgrade制作

    1、版本(major.minor.build.revision)增加(不包括revision)。
    2、UpgradeCode不变。
    3、ProductCode改变。

  • 接收版本号信息

    IS_MAJOR_UPGRADE is an msi property so first you have to fetch it using MsiGetProperty. If that function returns anything, the property is set and it’s a major upgrade

    STRING szPropertyValue;
    NUMBER nSize;
    <hr />nBufferSize=256;
    MsiGetProperty(ISMSI_HANDLE, "IS_MINOR_UPGRADE", svIsMinorUpgrade,nBufferSize);
    nBufferSize=256;
    MsiGetProperty(ISMSI_HANDLE, "IS_MAJOR_UPGRADE", svIsMajorUpgrade,nBufferSize);SprintfBox (INFORMATION, "This Works!", "This Installer may be a Minor upgrade - %s",svIsMinorUpgrade);SprintfBox (INFORMATION, "This Works!", "This Installer may be a Major upgrade - %s",svIsMajorUpgrade);

    或者严谨一点,

    
    nResult = MsiGetProperty ( ISMSI_HANDLE , "IS_MAJOR_UPGRADE" , sUpgrade, nvBufferSize );
    if nResult = ERROR_SUCCESS then
    MessageBox(" update detected ", INFORMATION);
    MessageBox( sUpgrade, INFORMATION);
    else
    MessageBox(" Not an Update ", INFORMATION);
    endif; 

    ​若需要在Disk中添加新文件或者文件夹,在Supported Files|Advanced Files|Disk中添加。

installShield_script学习相关推荐

  1. java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】

    类型的表达式,是循环条件,表达式3是党执行了一遍循环之后,修改控制循环的变量值. ??? for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作:然后判断表达式2的值,如果表达式的值为t ...

  2. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  3. FastAI 2019课程学习笔记 lesson 2:自行获取数据并创建分类器

    文章目录 数据获取 google_images_download 的安装和使用 挂载google 个人硬盘到Google colab中 删除不能打开文件 创建ImageDataBunch 训练模型 解 ...

  4. FastAI 课程学习笔记 lesson 1:宠物图片分类

    文章目录 代码解析 神奇的"%" 导入fastAI 库 下载解压数据集 untar_data 获取帮助文档 help() ? ?? doc 设置路径 get_image_files ...

  5. 深度学习学习指南-工具篇

    colab Colab是由Google提供的云计算服务,通过它可以让开发者很方便的使用google的免费资源(CPU.GPU.TPU)来训练自己的模型. 学习经验总结 如何使用命令行? 通过!+cmd ...

  6. Redis学习之路(一)--下载安装redis

    redis学习之路--下载安装redis windows安装redis 1.下载redis 2.安装 3.查看是否安装成功 windows安装redis 1.下载redis 网址:https://gi ...

  7. python内置库之学习configparser库(一)

    python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...

  8. 前端Vue学习之路(二)-Vue-router路由

    Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...

  9. 前端Vue学习之路(一)-初识Vue

    Vue学习之路 (一) 1.引言 2.更换npm国内镜像源 3.用npm下载Vue 4.Vue全家桶 5.使用命令创建项目 5.推荐插件 6.推荐网站 7.学习扩展 1.引言 先安装node.js环境 ...

  10. 如何学习数据挖掘和数据科学的7个步骤

    前言 概括 1 学习语言 2 工具:数据挖掘,数据科学和可视化软件 3 教科书 4 教育:网络研讨会,课程,证书和学位 5 数据 6 比赛 7 互动:会议,团体和社交网络 more 前言 最近一直一再 ...

最新文章

  1. pytroch 数据集 datasets DataLoader示例
  2. 企业日常选择网站制作公司大多从这三方面着手
  3. UISegmentedControl的详细使用
  4. [网络安全自学篇] 五十五.Windows系统安全之构建ROP链绕过DEP及原理详解
  5. Html图片懒加载动画,Intersection Observer实现滚动到相应区域执行动画及图片懒加载...
  6. EXCEL解析之终极方法WorkbookFactory
  7. 【LeetCode】剑指 Offer 59 - II. 队列的最大值
  8. c#中dateTimePicker怎么获取当前的日期
  9. spring 相关框架面试题
  10. 新建oracle数据库 环境查询,Oracle单实例数据库迁移到Oracle RAC 环境之(2)--实施篇...
  11. 1、JavaScript 函数,2、JavaScript 正则表达式,3、JavaScript JSON,
  12. thinkphp5.x之Collection(集合)解析 php集合
  13. django传递临时数据
  14. [转载] 实现宿主机和VirtualBox下虚拟机ping相通教程
  15. 【渗透测试常见漏洞概述及修复方法】
  16. 微信云控的好处及云控与群控的差别,后续讨论微信不死号
  17. echarts堆叠柱状图上显示数字_echarts堆叠柱状图在柱子上方显示总数
  18. blender建模小试
  19. Ubuntu18.04运行QQ音乐
  20. java-获取电池电量

热门文章

  1. 简单的一个百度注册界面
  2. 致敬科比,实现查询科比每赛季数据的Web服务器
  3. 华为智慧屏和荣耀智慧屏究竟有什么区别?
  4. 基于EasyX图形库的天天爱消除
  5. Spring使用标签aop:aspectj-autoproxy 出的一些错
  6. matlab结构力学仿真,MATLAB在结构力学分析中应用.doc
  7. 笔记1-P2P后台管理系统
  8. 七夕表白代码(动画爱心)
  9. 大立公告:红外焦平面阵将以新的面貌出现
  10. oracle的sql硬解析和软解析,[ORACLE]oracle SQL执行过程 软解析(soft prase)硬解析(hard prase)以及 Soft Soft Parse...