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

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

实现工程类: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

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

原文地址:https://www.cnblogs.com/sabrinahuang/p/1955976.html