InStallShield 命令行模式编译

最近在持续的弄IS12打包的事宜,有诸多事情需要处理,一些技术点需要掌握,关于IS的命令行模式编译安装文件,在网上搜了一些资料贴在这里,慢慢学吧,徐图之~~

命令行模式生成Installshield安装文件时要注意的问题

    最近在维护我们项目的Intallshield工程文件。为了方便应用程序的批处理生成,我们都是在命令行模式下使用ISBuild.exe来产生项目的安装文件。但是最近修正了我们项目的Installshield工程脚本里的一个Bug, 修正完了以后运行批处理文件生成安装程序,然后运行安装程序,安装完成后发现修改后的代码的结果并没有被反映出来。原来以为是有文件只读,导致某些生成文件不能被替换掉,于是去掉只读属性后重Build,发现改动还是没有被Build进去。无奈,只有仔细研读Installshield帮助,读了帮助后才发现,原来在Installshield里面,Compile和Build这两个步骤是完全分开独立的。我们知道,一般在Visual Studio里面,Compile是Build的一个子操作。但是在Installshield里面,Compile是用来编译脚本源代码,而Build是用来生成安装包,它并不会使用Compile来编译一道脚本源代码,由于我做的改动简单,改动完后并没有在IDE环境中Compile一次脚本,而在命令行的批处理文件中我们又没有使用Installshield的命令行脚本编译工具,因此脚本的变化总也反映不到安装包里面。
    于是,在批处理脚本中调用ISBuild.exe前加入如下命令:

set COMPILER="C: Program Files InstallShield Professional 7 Program BIN Compile.exe"
set RULFILES=
set INCLUDEPATHS= -I"C: Program Files InstallShield Professional 7 Script Ifx Include" -I"C: Program Files InstallShield Professional 7 Script ISRT Include" -I"L: CPS Dev TetraDev SetupProjects TetraCPPatchPackage Script Files" -I"C: Program Files InstallShield Professional 7 Include" -I"C: Program Files Microsoft Visual Studio VC98 atl include" -I"C: Program Files Microsoft Visual Studio VC98 mfc include" -I"C: Program Files Microsoft Visual Studio VC98 include"
set LINKPATHS=-LibPath"C: Program Files InstallShield Professional 7 Script Ifx Lib" -LibPath"C: Program Files InstallShield Professional 7 Script ISRT Lib"
set LIBRARIES=isrt.obl ifx.obl
set DEFINITIONS=-dPATCH_PACKAGE_MEDIA
set SWITCHES=-w50 -e50 -v3 -g
%COMPILER% %RULFILES% %INCLUDEPATHS% %LINKPATHS% %LIBRARIES% %DEFINITIONS% %SWITCHES%

然后存盘运行此批处理文件,完成后测试,发现脚本的变化终于可以正确地反映到安装包中。

http://zbnetium.spaces.live.com/Blog/cns!BDF6657CF8D6682E!181.entry

 

 

转自:http://bbs.scmroad.com/viewthread.php?tid=1655 利用命令行或者ant(nant)调用installshield Cruisecontrol 或者Cruisecontrol.NET中都可以调用installshield,这样就可以在做build的同时,进行打包,然后就可以交给Tester去测试了. 调用installshield,我想到的有三种方法, 1. 是把调用installshield的命令写到一个bat或者cmd文件中,利用Cruisecontrol(Cruisecontrol.NET)或者ant(Nant)去调用这个文件 2. 是把调用installshield的命令直接写到ant(Nant)的build.xml文件中去 3. 事实上也可以把这部分写到Cruisecontrol(CruiseControl.NET)的配置文件中去,但是我们不建议这样.尤其是项目比较多的情况.但是项目如果比较少的话,比如就一个项目,那么都写到一个文件中的确方便不少.好处坏处只能大家自己权衡一下了.然后针对自己的项目进行优化 在windows下如果写成cmd或者bat,就写成下面的样子引用: pushd Installers/ABCD_main %INSTALLSHIELD% -p ABCD_main.ism -o ../Release IF %ERRORLEVEL% NEQ 0 goto error popd 如果写到ant的build.xml脚本中,利用build脚本调用installsheild,就可以写成下面的样子: 引用: Build-ABCD-Main-Installer remove the read-only attribute:attrib -r /s * 在windows的命令行下利用installshield打包,大概就可以仿照上面的代码. 前提是你的installshield工程文件,在每次build的时候改动比较少.如果每次作一次build,installshield的工程文件都需要改动很多,那么就直接在installshield的GUI界面下build就可以了. 这种情况如果要变成自动build就很困难.不过,我们也可以找找installshield所能接受什么参数,如果你在GUI界面下需要更改的参数,都可以在命令行下给出,那么则可以省去很多事情.但是这方面我看的还比较少,如果大家谁比较精通,可以来一起分享一下.

 

1,请问大家如何在installshield的命令行中自动打包?2,每日构建好需要的安装包源文件后,如何通过installshield的命令行来制作安装包,而不用通过installshield软件来制作?注:制作安装包的脚本不变谢谢了!
答:晕,还是自己搞定了原来INSTALLSHIELD自身可以导出一个Build.bat文件可以每次自动运行生成如果是换了文件,目录等也可自己写个批处理,就解决了

你可能感兴趣的:(打包)