InstallShield制作安装包

来源:互联网 发布:淘宝上传图片变形 编辑:程序博客网 时间:2024/06/03 01:42

内容转自:http://www.51testing.com/?uid-18049-action-viewspace-itemid-17594

 

 

InstallShield制作安装包实现自动化

 

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

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
 )
 
终于是把这个东西写好了,现在可以支持不管多少层的文件夹了