内容发布更新时间 : 2024/11/15 21:02:14星期一 下面是文章的全部内容请认真阅读。
InstallShield制作的打包程序——代码示例 收藏
代码如下:有用的地方要用,但是,要根据实际情况,哦。
至少有些方法可以直接裁出来用的。
有些是我自己编写的,有些是从网上搜来的方法。做一个IS的打包程序还真是不容易呢。 Setup.Rul
view plaincopy to clipboardprint?
//=========================================================================== //
// File Name: Setup.rul //
// Description: Blank setup main script file //
// Comments: Blank setup is an empty setup project. If you want to // create a new project via. step-by step instructions use the // Project Assistant. //
//描述:空白设置主脚本文件
// 评论:空白的设置是一个空的安装项目。如果你想通过创建一个新的项目。分步说明使用项目助理
//===========================================================================
// Included header files ---------------------------------------------------- #include \
BOOL bWinLogin;
string szServer, szUser, szPassword;
//--------------------------------------------------------------- prototype WriteDBInfo(STRING);
function WriteDBInfo(dbConnection) string svResult; number nvFileHandle; begin
//写获取连接数据库文件
OpenFileMode(FILE_MODE_APPEND);
if (FindFile(ProgramFilesFolder+\
示
例
数
据
库
\没有,需要create一个
CreateFile(nvFileHandle,ProgramFilesFolder+\示例数据库\ else
OpenFile (nvFileHandle ,ProgramFilesFolder+\示例数据库
\
endif;
WriteLine( nvFileHandle,dbConnection); CloseFile(nvFileHandle); end ;
///////////////////////////////////////////////////////////////////////////////////////////////// prototype DetachDB();
function number DetachDB()
STRING szCmdLine,szWaitTxt; string svResult,svLine; number nvFileHandle; begin
OpenFileMode(FILE_MODE_APPEND);
szWaitTxt=\正在分离安装网站使用的数据库??\ SdShowMsg (szWaitTxt, TRUE); Delay(2);
//szCmdLine = \ /S \/Q \\\ sp_detach_db @dbname = N'YCSCMDB'\
//读取连接字符串
if (FindFile(ProgramFilesFolder+\\
示
例
数
据
库
MessageBox (\数据库配置文件丢失,请手动分离或删除网站使用的数据库!\ else
OpenFile ( nvFileHandle ,ProgramFilesFolder+\示例数据库\
ab:
if(GetLine( nvFileHandle,svLine)<0) then
CloseFile(nvFileHandle); else
szCmdLine =svLine+\/Q \\\ sp_detach_db @dbname = N'YCSCMDB'\\\
//szCmdLine = \ sp_attach_db @dbname = N'dlbj',@filename1 = N'\^\ = N'\ LaunchAppAndWait(\
if(LaunchAppAndWait(\ then
MessageBox (\数据库分离失败!请手动分离或删除网站使用的数据库!\
else
goto ab; endif;
endif;
SdShowMsg (szWaitTxt, FALSE); endif;
//szWaitTxt=\正在优化系统数据库??\ //SdShowMsg (szWaitTxt, TRUE); //Delay(2);
//szCmdLine = \\/P \/S \/Q \\\dlbj ; exec sp_updatestats\\\
// if (LaunchAppAndWait(\
// MessageBox (\数据库优化失败!您可以在 sql查询分析器中执行 use dlbj ; exec sp_updatestats 完成!\ // endif;
// SdShowMsg (szWaitTxt, FALSE);
return 0;
end;
//---------------------------------------------------------------------------
// Note: In order to have your InstallScript function executed as a custom // action by the Windows Installer, it must be prototyped as an // entry-point function.
// The keyword export identifies MyFunction() as an entry-point function. // The argument it accepts must be a handle to the Installer database.
/* export prototype MyFunction(HWND); */
//注意:为了让您的InstallScript中作为一个自定义的执行
//由Windows Installer的行动,它必须作为一个原型 入口点函数。
//关键字出口标识调用MyFunction()作为入口点函数。 //它接受的参数必须是一个句柄安装程序数据库。
//*出口原型调用MyFunction(HWND); * /
//----------------------------------------------------------------------- prototype CheckIIS(); //检测是否安装了iis //-------------------------------------------------------- //检测是否安装了IIS function CheckIIS()
NUMBER nvType, nvSize; STRING svvalue; begin
RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );
if (RegDBKeyExist (\ return (1);
else
return (0); endif; end;
//-----------------------------------------------------------
//--------------------------------------------------------------------------- // OnFirstUIBefore //
// The OnFirstUIBefore event is called by the framework when the setup is // running in first install mode. By default this event displays UI allowing // the end user to specify installation parameters.
//该事件被称为OnFirstUIBefore由框架时,安装程序
//运行在第一次安装模式。允许默认情况下此事件显示界面 //最终用户指定安装参数。
//--------------------------------------------------------------------------- function OnFirstUIBefore()
NUMBER nResult, nSetupType, nvSize, nUser;
STRING szTitle, szMsg, szQuestion, svName, svCompany, szFile; STRING szLicenseFile;
LIST list, listStartCopy; BOOL bCustom;
STRING szBmpPath, szAppPath,svResult,svLine,svSubStr,szIp;//自定义 number nvFileHandle,nvIp; string szOpt1, szOpt2; BOOL bLicenseAccepted;
begin
// TO DO: if you want to enable background, window title, and caption bar title // SetTitle( @PRODUCT_NAME, 24, WHITE ); // SetTitle( @PRODUCT_NAME, 0, BACKGROUNDCAPTION ); // Enable( FULLWINDOWMODE ); // Enable( BACKGROUND );
// SetColor(BACKGROUND,RGB (0, 128, 128));
SHELL_OBJECT_FOLDER = @PRODUCT_NAME;
nSetupType = TYPICAL;
//-----------------------------------------------------------------------
//设置背景图片
SetTitle(\欢迎您使用银河卡电子产品\ 24, WHITE);
SetTitle( \安装“网上阅卷系统”\ Enable(FULLWINDOWMODE); Enable(BACKGROUND );
// PlaceBitmap (SUPPORTDIR^\ //左上角显示图片
// PlaceBitmap (SUPPORTDIR^\ //全屏显示图片
//PlaceWindow ( BILLBOARD , 200 , 40 , UPPER_LEFT ); //平铺logo
//SetDisplayEffect(EFF_FADE);//设置显示效果
// PlaceWindow ( BILLBOARD , 200 , 40 , UPPER_LEFT ); //PlaceWindow(BACKGROUND,10,10,UPPER_LEFT); //背景窗口的位置为左上方开始10,10
SetColor(BACKGROUND,RGB (0, 128, 128)); //---------------------------------------------------------------- //----------------------------------------------------------------
szBmpPath=SUPPORTDIR+\ //图片有白色的背景,所以设置白色为透明色 “位图文件名;透明标志;<未用>;<未用>;透明色”标准位图为57×53 //SizeWindow (METAFILE,50, 50);
DialogSetInfo (DLG_INFO_ALTIMAGE, szBmpPath,TRUE); // 设置左边的logo图片 //------------------------------------------------------------------ //------------------------------------------------------------------
SdShowMsg( \安装程序正在检测系统必备组件...... \ Delay(2);
SdShowMsg (\
//--------------------------------------------------------------------- WriteIp:
//写获取ip地址文件
OpenFileMode(FILE_MODE_APPEND);
if (FindFile(SUPPORTDIR,\没有,需要create一个 CreateFile(nvFileHandle,SUPPORTDIR,\ else
OpenFile ( nvFileHandle ,SUPPORTDIR,\ //LaunchAppAndWait(\ endif;
WriteLine( nvFileHandle,\ CloseFile(nvFileHandle);
LaunchAppAndWait(\ //---------------------------------------------------------------------------------- //读取ip地址
if (FindFile( SUPPORTDIR,\没有,需要create一个 goto WriteIp;
else
OpenFile ( nvFileHandle ,SUPPORTDIR,\ endif; ab:
if(GetLine( nvFileHandle,svLine)<0) then