游戏测试,关注测试管理,测试效率提高; hlearning@msn.com

InstallShield制作安装包实现自动化

上一篇 / 下一篇  2007-08-04 21:48:57 / 个人分类:测试总结

InstallShield制作安装包实现自动化

      最近公司要实施制作安装包自动化,因为以前在制作安装包上的时间太长了,而我们制作的安装包又比较多,所以这个任务就被分派下来了,没想到给我了(可怜啊),想我以前从没接触过这一块,狂郁闷,只能在网上寻找资料中,还好终于解决了问题,实现了用批处理自动化(当然也可用批处理+WR来实现,不过后面发现还是批处理方便点),好了,言归正传,下面就开始了。

一,首先介绍下制作安装包大概流程

我用的是InstallShield6.3 Pro版本,这个软件制作安装包很强大不过现在我还不太会制作脚本(用的是以前别人写的,呵呵)

1, 介绍下制作前的注意事项

    1)准备好最新的release版本,要保证所有文件为最新

    2删除不需要的文件,如在VSS上取下的release版本,则要去掉vssver.sccthumbs.db*.pdb文件

    >整个文件夹中的文件要去掉只读属性

2, 清理好后,开始用InstallShield制作安装包了

1)怎么新建工程,我就不说了,大家用下就知道了

2)新建好工程后,在scrīpts面板中进行代码修改(根据你需要的安装包内容,形式自己写代码)

3)选定Setup files面板—>Splash Screen>Language Independent,将您需要的欢迎图片setup.bmp替换到这里。

4)选定Setup files面板—> Language Independent>Operating System Independent,将实际需要的许可协议文件、帮助文档等替换至此

5)选定File Groups面板,将软件相关文件插入

6Resource面板里可修改产品名称、版本和快捷方式等

7)可以在菜单Project>Settings中修改如下选项。

a.Application中修改版本,公司名称

b.Platforms中修改平台信息

c.Language中修改语言信息

8)编译运行

9Media媒体发布

3OK,现在我们已经做好了一个安装包了,当然你也可以为安装制作的好看些,比如增加皮肤等,这个就不说了,下面是重要的地方,呵呵

先说下我的思路

第一步是把命令行编译批处理写出来(这个简单,可我当时是弄了一天才知道,哎,原来在InstallShield菜单面板上的Build下有个导出编译的批处理的)。

第二步是把我们生成的最终安装包和安装文件备份到另外的文件夹中去,可以用批处理来写,我是以当天的日期+项目名来新建目录的,保存为Copy.bat代码如下:

 

 

@echo off

if exist "%date:~0,-4%_XX" (

goto date) else (

md "E:\XX版安装包制作\%date:~0,-4%_XX"

)

:date

xcopy "E:\XX\shield_网络版\Media\New Media\Disk Images\Disk1\*.*" " E:\XX版安装包制作\%date:~0,-4%_XX" /e /h

rem这个就是你从你做安装包的程序路径中把制作的安装包拷贝出去

xcopy " E:\XX\release\*.*" " E:\XX版安装包制作\%date:~0,-4%_XX\release" /e /h

rem这个简单,大家应该都知道,把源文件拷贝出去备份下

  

 

   然后我们可以在Build.bat文件中调用这个Copy.bat

第三步,本来做到这里就可以基本结束了,但是考虑到还有个问题没解决,所有加了这一步,当我们的项目中增加文件,或者是减少文件后,如果还是安装一,二步去操作,肯定有问题的,因为InstallShield在编译文件时,是根据File Groups文件夹下的App Executables.fgl中的文件路径来判断文件的,当你增加或者减少文件后,这里面的文件路径并没有相应的进行改变,这里我们就要写个批处理来进行自动生成App Executables.fgl文件了,这个批处理我是问了别人才写出的,呵呵,我批处理不好,看下面:

 

如你的release文件夹路径如下:

C:\123456------根目录
-->c:\123456\1---->
子目录1
-->c:\123456\2---->
子目录
2
-->c:\123456\a.txt---->
文件
a.txt
-->c:\123456\b.dll---->
文件
b.txt
-->c:\123456\1\c.txt---->
文件
c.txt
-->c:\123456\2\d.dll---->
文件d.dll

 

App Executables.fgl文件中是这样排列的

[General]

Type=FILELIST

Version=1.10.000

 

[TopDir]
file0=c:\123456\a.txt
file1=c:\123456\b.dll
SubDir0=1
SubDir1=2

[1]
fulldirectory=c:\123456\1
file0=c:\123456\1\c.txt

[2]
fulldirectory=c:\123456\2
file0=c:\123456\2\d.dll

 

PS:我是先把这些内容写到一个App Executables.txt文件中,再改为App Executables.fgl格式。

 

 

下面的(现在完成了,发来补充下,需要写2个bat,run.bat和run2.bat)
run.bat如下,我的bat目录放在J:\江西版下


@echo
echo [General]>"%~dp0App Executables.fgl"
echo Type=FILELIST>>"%~dp0App Executables.fgl"
Echo Version=1.10.000>>"%~dp0App Executables.fgl"
echo.>>"%~dp0App Executables.fgl"
echo [TopDir]>>"%~dp0App Executables.fgl"

call J:\江西版\run2.bat J:\江西版\release
rem (J:\江西版\release)是你需要运行的文件夹
 
 
run2.bat如下
@echo off
set num=0
for /f "delims=" %%a in ('dir /b /a-d "%~1"') do (
  call echo file%%num%%=%~1\%%a>>"%~dp0App Executables.fgl"
  set /a num+=1
)
set num=0
for /f "delims=" %%a in ('dir /b /ad "%~1"') do (
  call echo SubDir%%num%%=%~2%%a>>"%~dp0App Executables.fgl"
  set /a num+=1
)
 
echo.>>"%~dp0App Executables.fgl"
set num=0
for /f "delims=" %%a in ('dir /b /ad "%~1"') DO (
  echo [%~2%%a]>>"%~dp0App Executables.fgl"
  echo fulldirectory=%~1\%%a>>"%~dp0App Executables.fgl"
  call J:\江西版\run2.bat %~1\%%a %~2%%a\
  set /a num+=1
 )
 
终于是吧这个东西写好了,现在可以支持不管多少层的文件夹了
 
呵呵,终于写好了下,算是总结下吧


TAG: network

蓝天伟测试之家 引用 删除 lantianwei   /   2007-10-17 12:49:23
写的不错啊!
 

评分:0

我来说两句

Open Toolbar