现在的位置: 首页 > 综合 > 正文

InstallShield制作安装包

2013年12月25日 ⁄ 综合 ⁄ 共 2821字 ⁄ 字号 评论关闭

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

 

 

InstallShield




制作安装包实现自动化

 



一,


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

1,
 



介绍下制作前的注意事项

    
1


)准备好最新的
release

版本,要保证所有文件为最新

   
 
2



删除不需要的文件,如在
VSS

上取下的
release

版本,则要去掉
vssver.scc


thumbs.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

面板,将软件相关文件插入

6


Resource

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

7

)可以在菜单
Project


>Settings

中修改如下选项。

a.


Application

中修改版本,公司名称



b.


Platforms

中修改平台信息

c.


Language

中修改语言信息

8

)编译运行

9


Media

媒体发布

3


OK

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

先说下我的思路

第一步是把命令行编译批处理写出来(这个简单,可我当时是弄了一天才知道,哎,原来在
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
 )
 
终于是把这个东西写好了,现在可以支持不管多少层的文件夹了

抱歉!评论已关闭.