• 预编译器,实现同个工程,编译出不同版本


    有时候我们会碰到这样的情况,一个软件分了好几个版本,其实大部分内容是相同的,只是有几个文件有稍许的差别。所以我们希望能够在同一个工程中,通过设置一定的条件,编译出不同的版本

    实现工程类:Installscript 2009/2010

    实现:

    1. 定义符合不同版本要求的feature

    比如分国内国外两个版本,就可以建立两个feature ,一个命名为ForOversea,另一个命令为ForDomestic,然后将稍许的差别的文件添加到不同的feature中.注意:最好设置这两个feature的visible属性为”No”,因为这些feature只是对我们来说有区别,客户无需知道

    2. 脚本实现安装哪个feature

    在function OnFirstUIBefore(),指定一定的条件并通过ComponentSelectItem函数来实现什么情况下安装哪个feature:

    #ifdef ForOversea

    ComponentSelectItem(MEDIA," ForDomestic",FALSE);

    #else

    ComponentSelectItem(MEDIA,"ForOversea",FALSE);

    #endif

    3. 指定编译哪个版本

    在build菜单中找到settings选项,选择“Compile/link” tab,在preprocessor中输入要编译的版本,比如需要编译国外版,就输入ForOversea(注意:这里输入的ForOversea,必须与第2步中脚本#def里定义的相同。

    4. 最后build菜单中选择 Refresh build一下即可编译出需要的版本

    5. 如果是IS6.3的版本, 第2步有稍许的不同,

    1) 需要在先定义全局define #define ForDomestic 0 // 0:ForDomestic; 1:ForOversea

    2) #if (ForDomestic =0)

    ComponentSelectItem(MEDIA," ForOversea ",FALSE);

    #elif (ForDomestic =1)

    ComponentSelectItem(MEDIA," ForDomestic ",FALSE);

    #endif

    版权声明:转载请注明原始出处。 

  • 相关阅读:
    [转载]为 Windows 下的 PHP 安装 PEAR 和 PHPUnit
    作品和案例
    js创建对象的最佳实践
    log4j的PatternLayout参数含义
    Java线程池——ThreadPoolExecutor的使用
    登录mysql 报 Access denied for user 'root'@'localhost' 错误
    CentOS 7下使用yum安装MySQL5.7
    linux下MySQL停止和重启
    Linux 命令 -- chown
    Linux 命令 -- chmod
  • 原文地址:https://www.cnblogs.com/sabrinahuang/p/1955976.html
Copyright © 2020-2023  润新知