使用InstallShield打包Tomcat+MySql+Jdk的Web运行环境详解

C# installshield2020项目部署打包详细教程 installshield2020打包教程 文章目录installshield2020打包教程一、打开软件建个工程二、设置项目三、开始打包四、程序安装测试 一、打开软件建个工程 New->Windows Installer->Basic MSI->Project Name->location 二、设置项目 ​ 工程建好后,如果没有 1 Project Assistant选项卡,那么选择2 VIEW选项卡中的 Project Assistant 调出该选项。 三、开始打包 ​ 点击 阅读详情

准备

下面模块的版本,是实际使用的版本,可以不局限下面的具体版本,主要了解打包的过程。

  • InstallShield2009
  • apache-tomcat-6.0.41
  • mysql-5.7.19-winx64

以上软件模块,都可以搜索到,具体地址就不提供了。

创建安装批处理文件

各个模块的目录结构如下:
在这里插入图片描述
对于Tomcat,它提供了【bin\service.bat】批处理,执行它可以创建Tomcat服务,例如:

echo 安装Tomcat服务[Last]
%homepath%\tomcat\apache-tomcat-6.0.41\bin\service.bat install dvcs_tomcat

对于MySql稍微麻烦些,首先它依赖VS2013的分发库:

echo 安装VS2013发布库[MySql需要此库]
%homepath%\vcredist_x64_2013.exe

其次,需要修改MySql的my.ini文件的路径和一些设置,并拷贝到MySql的工作目录下。因为MySql有一个超时自动断开的连接的机制,为了保持其长时间连接,需要修改my.ini的设置:

[mysqld]
wait_timeout=31536000
interactive_timeout=31536000

为了达到自动化修改my.ini的设置,设计了一个模板文件【my_template.ini】,并且通过开发了一个EXE【ModifyMySqlIniFile.exe】来修改其中的路径和一些参数,最后通过批处理命令把它保存到MySql的工作目录下,具体命令如下:

echo 生成My.ini
%homepath%\ModifyMySqlIniFile.exe %homepath%\mysql\my_template.ini %homepath%\mysql\mysql-5.7.19-winx64 > %homepath%\mysql\mysql-5.7.19-winx64\my.ini

安装MySql服务和启动服务的命令如下:

echo 安装MySql服务
%homepath%\mysql\mysql-5.7.19-winx64\bin\mysqld --install dvcs_mysql --defaults-file=%homepath%\mysql\mysql-5.7.19-winx64\my.ini
echo 启动MySql服务
net start dvcs_mysql

创建应用数据库时,由于需要支持批处理,发现MySql可以执行外部Sql文件,所以我先建立一个Sql文件【create_db.txt】,具体内容如下:

create database dvcs;

在安装的批处理【real_install.bat】里,执行创建应用数据库,具体命令如下:

echo 创建数据库[dvcs]
"%cd%\mysql\mysql-5.7.19-winx64\bin\mysql" -h localhost -uroot -p123456 < %homepath%\mysql\mysql-5.7.19-winx64\create_db.txt

至此,基本的模块都可以通过批处理命令执行了,完整安装的批处理如下:

@ echo off  

::切换到工作目录
cd /d %~dp0
echo %cd%

set homepath="%cd%"

echo 安装VS2013发布库[MySql需要此库]
%homepath%\vcredist_x64_2013.exe

echo 生成My.ini
%homepath%\ModifyMySqlIniFile.exe %homepath%\mysql\my_template.ini %homepath%\mysql\mysql-5.7.19-winx64 > %homepath%\mysql\mysql-5.7.19-winx64\my.ini

echo 安装MySql服务
%homepath%\mysql\mysql-5.7.19-winx64\bin\mysqld --install dvcs_mysql --defaults-file=%homepath%\mysql\mysql-5.7.19-winx64\my.ini

echo 启动MySql服务
net start dvcs_mysql

echo 创建数据库[dvcs]
"%cd%\mysql\mysql-5.7.19-winx64\bin\mysql" -h localhost -uroot -p123456 < %homepath%\mysql\mysql-5.7.19-winx64\create_db.txt

echo 安装Tomcat服务[Last]
%homepath%\tomcat\apache-tomcat-6.0.41\bin\service.bat install dvcs_tomcat

还有一个问题,因为后面需要部署应用,不能缺少环境变量,因此也需要创建一个批处理文件【set_sys_env.bat】以执行自动化创建环境变量,具体内容如下:

@echo off
::切换到工作目录
cd /d %~dp0
echo %cd%

echo 用户环境变量
setx DVCS_HOME "%cd%"
setx JRE_HOME "%cd%\jdk1.8.0_131\jre"
setx CATALINA_HOME "%cd%\tomcat\apache-tomcat-6.0.41"
setx MYSQL_HOME "%cd%\mysql\mysql-5.7.19-winx64"

echo 系统环境变量
set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
set envname=DVCS_HOME
set envpath="%cd%"
reg add "%regpath%" /v %envname% /d %envpath% /f

set envname=JRE_HOME
set envpath="%cd%\jdk1.8.0_131\jre"
reg add "%regpath%" /v %envname% /d %envpath% /f

set envname=CATALINA_HOME
set envpath="%cd%\tomcat\apache-tomcat-6.0.41"
reg add "%regpath%" /v %envname% /d %envpath% /f

set envname=MYSQL_HOME
set envpath="%cd%\mysql\mysql-5.7.19-winx64"
reg add "%regpath%" /v %envname% /d %envpath% /f

并且为了保存安装时日志,安装和设置运行环境的批处理外层再封装一个批处理【install.bat】,将控制台输出重定向到文件里,具体内容如下:

@ echo off  

::切换到工作目录
cd /d %~dp0
echo %cd%

::设置环境变量
call set_sys_env.bat

::调用安装批处理
call real_install.bat > install.log

至此,安装批处理创建完毕。

创建卸载批处理文件

卸载Tomcat很简单,卸载其服务即可:

echo 删除Tomcat服务[Last]
%homepath%\tomcat\apache-tomcat-6.0.41\bin\service.bat remove dvcs_tomcat

卸载MySql稍微复杂些,不过参考安装的步骤,创建删除数据库的Sql文件【drop_db.txt】,具体内容如下:

drop database dvcs;

完整的卸载MySql的批处理【unstall_mysql.bat】内容如下:

set sqlhome="%MYSQL_HOME%"

echo 删除数据库[dvcs]
::%sqlhome%\bin\mysql -h localhost -uroot -p123456 < %sqlhome%\drop_db.txt
"%MYSQL_HOME%\bin\mysql.exe" -h localhost -uroot -p123456 < %sqlhome%\drop_db.txt

echo 停止MySql服务
net stop dvcs_mysql

echo 删除MySql服务
%sqlhome%\bin\mysqld --remove dvcs_mysql

删除环境变量的批处理【del_sys_env.bat】如下:

@echo off
echo 删除用户变量
set regpath=HKEY_CURRENT_USER\Environment
set envname=DVCS_HOME
reg delete "%regpath%" /v "%envname%" /f

set envname=JRE_HOME
reg delete "%regpath%" /v "%envname%" /f

set envname=CATALINA_HOME
reg delete "%regpath%" /v "%envname%" /f

set envname=MYSQL_HOME
reg delete "%regpath%" /v "%envname%" /f

echo 删除系统变量
set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
set envname=DVCS_HOME
reg delete "%regpath%" /v "%envname%" /f

set envname=JRE_HOME
reg delete "%regpath%" /v "%envname%" /f

set envname=CATALINA_HOME
reg delete "%regpath%" /v "%envname%" /f

set envname=MYSQL_HOME
reg delete "%regpath%" /v "%envname%" /f



再在外面封装一个卸载批处理【unstall.bat】,具体如下:

@ echo off  

::切换到工作目录
cd /d %~dp0

set homepath="%DVCS_HOME%"

echo 卸载MySql
call %homepath%\unstall_mysql.bat

echo 删除环境变量
call %homepath%\del_sys_env.bat

echo 删除Tomcat服务[Last]
%homepath%\tomcat\apache-tomcat-6.0.41\bin\service.bat remove dvcs_tomcat

至此卸载批处理也已创建完毕。

InstallShield打包

通过InstallShield打包,其实很简单,在主要的几个事件里调用安装和卸载的批处理即可,具体创建打包工程我就不多说了,因为这个视具体项目而定,我的打包工程类型为【InstallScript MSI Project】,不过需要注意的是运行环境在安装完成后需要重启计算机才有效,所以我在脚本里添加了重启计算机的命令。InstallShield的脚本如下:

//===========================================================================
//
//  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 "ifx.h"
// 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); */

//---------------------------------------------------------------------------
// 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.   
//---------------------------------------------------------------------------
function OnFirstUIBefore()
    NUMBER nResult, nSetupType, nvSize, nUser;
    STRING szTitle, szMsg, szQuestion, svName, svCompany, szFile;
    STRING szLicenseFile;
	BOOL bCustom, bIgnore1, bIgnore2;
begin
    //SetTitle("Installation "+IFX_PRODUCT_NAME,0,BACKGROUNDCAPTION);
    // 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));					   

    // Added in InstallShield 15 - Show an appropriate error message if
    // -uninst is specified and the product is not installed.
    if( REMOVEONLY ) then
        Disable( DIALOGCACHE );
		szMsg = SdLoadString( IDS_IFX_ERROR_PRODUCT_NOT_INSTALLED_UNINST );
   		SdSubstituteProductInfo( szMsg );
		MessageBox( szMsg, SEVERE );
		abort;
    endif;
    
	nSetupType = TYPICAL;	

Dlg_SdWelcome:
    szTitle = "";
    szMsg   = "";
    nResult = SdWelcome(szTitle, szMsg);
    if (nResult = BACK) goto Dlg_SdWelcome;
	
	szTitle   = "";
	svName    = "";
    svCompany = "";

Dlg_SdRegisterUser:
    szMsg = "";
    szTitle = "";
    nResult = SdRegisterUser( szTitle, szMsg, svName, svCompany );
    if (nResult = BACK) goto Dlg_SdWelcome;

Dlg_SetupType:   

Dlg_SdAskDestPath:    	
    nResult = SdAskDestPath(szTitle, szMsg, INSTALLDIR, 0);
    if (nResult = BACK) goto Dlg_SdRegisterUser;

Dlg_SdFeatureTree: 
    szTitle    = "";
    szMsg      = "";
    if (nSetupType = CUSTOM) then
		nResult = SdFeatureTree(szTitle, szMsg, INSTALLDIR, "", 2);
		if (nResult = BACK) goto Dlg_SdAskDestPath;  
    endif;

Dlg_SQL:
    nResult = OnSQLLogin( nResult );
    if( nResult = BACK ) then
    	if (!bCustom) then
    		goto Dlg_SetupType;    
    	else
    		goto Dlg_SdFeatureTree;
    	endif;
    endif;

Dlg_ValueAddedServices:
    nResult = OnFirstUIBeforeValueAddedServices( nResult );
    if (nResult = BACK) goto Dlg_SQL;

Dlg_SdStartCopy:
    szTitle = "";
    szMsg   = "";
    nResult = SdStartCopy2( szTitle, szMsg );			
	
	if (nResult = BACK) then
    	goto Dlg_ValueAddedServices;
    endif;

    // Added in IS 2009 - Set appropriate StatusEx static text.
    SetStatusExStaticText( SdLoadString( IDS_IFX_STATUSEX_STATICTEXT_FIRSTUI ) );

    // setup default status
    Enable(STATUSEX);
 
    return 0;
end;
//---------------------------------------------------------------------------
// OnMaintUIBefore
//
// The OnMaintUIBefore event is called by the framework when the setup is
// running in maintenance mode. By default this event displays UI that
// allows the end user to add or remove features, repair currently
// installed features or uninstall the application.
//---------------------------------------------------------------------------
function OnMaintUIBefore()
	NUMBER nResult, nType;
	STRING szTitle, szMsg, svDir, svResult, szCaption,szCmd,szDir;
begin 
    //SetTitle("Installation "+IFX_PRODUCT_NAME,0,BACKGROUNDCAPTION);
    //加入终止进程函数
     
	// TO DO: if you want to enable background, window title, and caption bar title   								
	// SetTitle( @PRODUCT_NAME, 24, WHITE );					
	// SetTitle( @PRODUCT_NAME, 0, BACKGROUNDCAPTION );  			
	// SetColor(BACKGROUND,RGB (0, 128, 128));					
	// Enable( FULLWINDOWMODE );						
	// Enable( BACKGROUND );							

Dlg_Start:

    nType = REMOVEALL; 
    nResult = MessageBox( SdLoadString( IFX_MAINTUI_MSG ), MB_YESNO );
		if (nResult != IDYES ) then
            abort;
        endif; 
     
    // 删除服务    
    szCmd = TARGETDIR ^ "\\DVCSRunPlatform\\unstall.bat"; 
    LaunchAppAndWait(szCmd,"",LAAW_OPTION_WAIT|LAAW_OPTION_SHOW_HOURGLASS|LAAW_OPTION_HIDDEN);  
    
	switch(nType)
        case REMOVEALL: 
            ComponentRemoveAll();

            // Added in IS 2009 - Set appropriate StatusEx static text.
            SetStatusExStaticText( SdLoadString( IDS_IFX_STATUSEX_STATICTEXT_MAINTUI_REMOVEALL ) );

        case REPAIR:
        
            ComponentReinstall();

            // Added in IS 2009 - Set appropriate StatusEx static text.
            SetStatusExStaticText( SdLoadString( IDS_IFX_STATUSEX_STATICTEXT_MAINTUI_REPAIR ) );


        case MODIFY:

            // Added in IS 2009 - Set appropriate StatusEx static text.
            SetStatusExStaticText( SdLoadString( IDS_IFX_STATUSEX_STATICTEXT_MAINTUI_MODIFY ) );

    endswitch;
    
	// setup default status 
	SetStatusWindow(0, "");
	Enable(STATUSEX);
	StatusUpdate(ON, 100);
end;
//---------------------------------------------------------------------------
// OnMaintUIAfter
//
// The OnMaintUIAfter event called by the framework after the file transfer
// of the setup when the setup is running in maintenance mode. By default
// this event displays UI that informs the end user that the maintenance setup
// has been completed successfully.
//---------------------------------------------------------------------------
function OnMaintUIAfter()
    STRING szTitle, szMsg1, szMsg2, szOpt1, szOpt2;
    NUMBER bOpt1, bOpt2;
begin
	Disable(STATUSEX);
    
    if( REMOVEALLMODE ) then
        szTitle = SdLoadString(IFX_SDFINISH_REMOVE_TITLE);
        szMsg1 = SdLoadString(IFX_SDFINISH_REMOVE_MSG1);
                
    	DeleteProgramFolder(TARGETDIR+"DVCSRunPlatform");
    	DeleteProgramFolder(FOLDER_PROGRAMS+"DVCSRunPlatform");         
    else
        szTitle = SdLoadString(IFX_SDFINISH_MAINT_TITLE);    
        szMsg1  = SdLoadString(IFX_SDFINISH_MAINT_MSG1);
    endif;

	bOpt1   = FALSE;
    bOpt2   = FALSE;    

    if ( BATCH_INSTALL ) then
    	SdFinishReboot ( szTitle , szMsg1 , SYS_BOOTMACHINE , szMsg2 , 0 );
    else    
       	SdFinish ( szTitle , szMsg1 , szMsg2 , szOpt1 , szOpt2 , bOpt1 , bOpt2 );
    endif;                                                              
    
   	/* if(REMOVEALLMODE)  then
    	SdFinishReboot ( @IDS_Z_REBOOT_TITLE ,@IDS_Z_REBOOT_MESG , SYS_BOOTMACHINE , "" , 0 );
    endif;  */
end;

//---------------------------------------------------------------------------
// OnFirstUIAfter
//
// The OnFirstUIAfter event called by the framework after the file transfer
// of the setup when the setup is running in first install mode. By default
// this event displays UI that informs the end user that the setup has been
// completed successfully.
//---------------------------------------------------------------------------
function OnFirstUIAfter()
    STRING szTitle, szMsg1, szMsg2, szOpt1, szOpt2,szFile;
    NUMBER bOpt1, bOpt2,nResult;
begin
	Disable(STATUSEX);
    
	bOpt1   = FALSE;
    bOpt2   = FALSE;    

    if ( BATCH_INSTALL ) then
    	SdFinishReboot ( szTitle , szMsg1 , SYS_BOOTMACHINE , szMsg2 , 0 );
    else
	    SdFinish ( szTitle , szMsg1 , szMsg2 , szOpt1 , szOpt2 , bOpt1 , bOpt2 );
	endif;
	SdFinishReboot ( szTitle , szMsg1 , SYS_BOOTMACHINE , szMsg2 , 0 );
end;

//---------------------------------------------------------------------------
// OnInstallFilesActionAfter
//
// The InstallFilesActionAfter event is called just after the standard MSI
// action 'InstallFiles' is executed.
//---------------------------------------------------------------------------
function OnInstallFilesActionAfter() 
STRING  szDir;
STRING	szCmd; 
NUMBER ret;
begin         
	if( REMOVEALLMODE ) then
		
	else           
	     
	    // 设置环境变量     
	    /* szCmd = TARGETDIR ^ "\\DVCSRunPlatform\\set_sys_env.bat"; 
	    LaunchAppAndWait(szCmd,"",LAAW_OPTION_WAIT|LAAW_OPTION_SHOW_HOURGLASS|LAAW_OPTION_HIDDEN);
	    */  
     
	    // 安装服务     
	    szCmd = TARGETDIR ^ "\\DVCSRunPlatform\\install.bat"; 
	    LaunchAppAndWait(szCmd,"",LAAW_OPTION_WAIT|LAAW_OPTION_SHOW_HOURGLASS|LAAW_OPTION_HIDDEN);  
		
	endif;
end;
//---------------------------------------------------------------------------
//  OnResumeUIBefore
//
//  The OnResumeUIBefore event is called when end user runs installation that
//  is performing a resumed install. Usually this happens by specifying
//  a property like REINSTALL or ADDLOCAL at the command line when the 
//  product is already installed. After this function returns, 
//  ComponentTransferData is called to perform file transfer.
//---------------------------------------------------------------------------
function OnResumeUIBefore()
	int    nResult;
	string szTitle, szMsg ,szCmd;
begin

    //加入终止覆盖函数函数

    /*MessageBox("The installation has detected that DVCS Server has been installed. " +
    		     "Please uninstall the DVCS Server, " + "then restart the installation process.", INFORMATION);
    abort; */
    
Dlg_SdWelcome:
	szTitle = SdLoadString(ISWI_RESUMEUI_TITLE);
	szMsg = SdLoadString(ISWI_RESUMEUI_MSG);
    nResult = SdWelcome(szTitle, szMsg);

    // Added in IS 2009 - Set appropriate StatusEx static text.
    szMsg = SdLoadString( IDS_IFX_STATUSEX_STATICTEXT_UPDATEUI );
	SdSubstituteProductInfo( szMsg );
    SetStatusExStaticText( szMsg );

	Enable(STATUSEX);
	                              
	// 删除服务
	szCmd = TARGETDIR ^ "\\DVCSRunPlatform\\unstall.bat"; 
    LaunchAppAndWait(szCmd,"",LAAW_OPTION_WAIT|LAAW_OPTION_SHOW_HOURGLASS|LAAW_OPTION_HIDDEN);             

end;

以上介绍了所有步骤,希望对大家有所帮助。下一篇,我将介绍怎样在已经部署好的Web运行环境下部署Web应用。

installshield辅助小程序_部署Mysql数据库 1:脚本为db.sql,在该程序的同级目录下面 2:执行脚本后,有对话框提示,提示内容为执行时间或出错信息 期待改善的地方: 1:加一个执行脚本的进度条 2)执行后将日志输出到文本文件,便于查看。 立即下载

相关推荐

InstallShield 制作安装程序(java web程序)

InstallShield 制作安装程序(java web程序),将java web程序包含JDK resin服务等打包成.exe安装文件。

installshield 安装mysql数据库_[开发手记]使用 InstallShield 安装和卸载SQL Server 数据库...

2、建立一个连接,假定为“MasterConnection”,按照图2和图3设置该连接的属性。图2 建立连接图3 设置连接的属性3、在“MasterConnection”下,新建一个Script,属性的设置如图4,script的内容如下:1USEmaster23IFNOTEXISTS(SELECT*45FROMmaster.dbo.sysdatabases67WHEREname='R...

weixin_30843121的博客 274

InstallShield打包MySQL

利用InstallShield打包MySQL,利用批处理在安装程序的同时,安装和配置mysql,卸载程序时关闭并卸载mysql服务

InstallShield LE 打包MySQL

之前软件使用的数据库是微软的sql server,InstallShield Limited 2013中是可以直接打包的,现在需要改成mysqlserver,需要自己写批处理把mysql打包进去。

qq_27157051的博客 2148

如何使用 InstallShield12 打包WEB工程

如何使用 InstallShield12 打包WEB工程 今天研究了一下用InstallShield12打包,顺便把代码给大家共享一下, 希望对刚接触的朋友有所帮助(我也是刚接触的),程序包括安装JDK,TOMCATE等等

如何使用installshield制作windows版本,及在已经有工程的情况下,怎么模仿使用

如何使用installshield制作windows版本,及在已经有工程的情况下,怎么模仿使用

在已部署Tomcat+MySql+Jdk后,如何打包部署应用

前言 前一篇介绍了如何使用InstallShield打包自动部署JavaWeb的运行环境,如果有不了解的,请参考: 使用InstallShield打包Tomcat+MySql+Jdk的Web运行环境详解 本文主要介绍如何使用InstallShield打包自动部署应用。具体应用是多种多样的,但是打包的思路基本一样的。拷贝文件,系统注册等操作,InstallShield都会替你做了,我们只需要在Ins...

ptrunner的专栏 863

installshield打包完整示例.

Installshield可以说是最好的做安装程序的商业软件之一,不过因为功能的太过于强大,以至于上手和精通都不是容易的事情,之前都是用Installshield的Project Assistant对付过去的,这次做这个安装程序,为了实现一些功能,必须写代码,国内外现成的资料很少,而且很多都语焉不详,自己反复啃了多次,对比Installshiel自带的help,才明白资料所表达的意思。这个安装程序虽然比较简陋,在行家眼里可能是小菜一碟,但是也花了笔者一个星期的时间,阅读了很多资料,啃了好几天英文help,集成了很多先驱者的经验,也费了自己不少心血做成的,对每一段代码的用处、每一个用到的函数都进行了详细的说明;。

如何使用 InstallShield6.22 打包J2EE WEB工程

 今天研究了一下用InstallShield6.22打包,顺便把代码给大家共享一下,希望对刚接触的朋友有所帮助(我也是刚接触的),程序包括安装JDK,TOMCATE,MYSQL等等,程序还不完善,以后有时间再跟大家分享。语言包我也发到资源里了,大家可以下载。 #include "ifx.h"       function OnFirstUIBefore()         //变量   

wpabbs的专栏 1942

IoTDB时序数据库在Windows下的保姆级安装教程(含环境变量配置避坑指南)

本文提供Apache IoTDB时序数据库在Windows系统下的详细安装与配置指南。教程涵盖从Java环境检查、软件下载解压,到环境变量配置的深度避坑,并详解了服务的启动、停止、连接测试及基础数据操作,帮助物联网开发者在Windows平台快速搭建稳定的时序数据库环境。

weixin_29275257的博客 261

投入产出表之直接消耗系数和完全消耗系数计算--基于Excel

介绍 上篇博客已介绍投入产出表的结构类型及意义解读,在此就不重复写了。 投入产出法中相对稳定的因素是一些系数,根据投入产出表可以计算很多系数: 案例 案例数据即流量矩阵,采用的是中国2012年的部分行业数据,若有不对,请批评指正哈。 直接消耗系数的计算 根据上表和直接消耗系数的计算公式,直接消耗系数矩阵通常用A表示。农林牧渔产品和服务部门对其他部门产品的直接消耗系数分别为: 这些消耗系数的经济意义是,农、林、牧、渔产品和服务部门每生产单位(1亿元)总产出,要直接消耗0.1378亿元本部门产品,0.26

m0_46271335的博客 7万+

InstallShield制作JSP+TOMCAT+JDK+MYSQL(第一篇)

http://blog.youkuaiyun.com/wpabbs/article/details/3129602 版权声明:本文为博主原创文章,未经博主允许不得转载。  工作之余没事情做,研究了一下InstallShield打包,得到了一些小的经验,跟大家分享一下。因为我也是新手,错误之处还请见谅,希望对大家有所帮助。 本文主要是打包JSP+TOMCAT+JDK+MYSQL

mengzhengjie的专栏 707

2025年ZBrush雕刻实战:从基础到高级技巧全解析

本文全面解析2025年ZBrush雕刻实战技巧,从基础界面操作到高级笔刷应用。详细介绍了核心功能区域如工具面板和灯箱,以及推荐材质选择。重点讲解6个实用笔刷技巧,包括Standard、Move和ClayBuildup等,帮助用户从入门到精通掌握ZBrush雕刻技术。

weixin_29300241的博客 360

转---B/S结构JavaEE WebApp的全自动安装包制作心得

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34362790的博客 118

Oracle迁移至华为GaussDB SQL语法和存储过程转换

在将Oracle数据库迁移至GaussDB时,SQL语法和存储过程的转换是确保应用程序正常运行和数据完整性的关键环节。由于两者在数据类型、函数、过程语言等方面存在差异,必须系统化地进行转换和测试。正则表达式脚本:批量替换常见的语法差异。SQL解析工具:解析SQL脚本,生成GaussDB兼容的语法。代码审查工具:自动检查转换后的代码,确保语法和逻辑正确。将Oracle迁移至GaussDB涉及到SQL语法和存储过程的全面转换。通过系统化的转换步骤、使用合适的工具并结合手动调整,可以确保迁移过程的顺利进行。

weixin_38428874的博客 2397

工业视觉开发者的福音:用C#玩转VisionMaster算子(非方案版完整教程)

本文为工业视觉开发者提供了一份完整的C#与VisionMaster算子二次开发教程,详细介绍了环境配置、算子调用原理、性能优化技巧及实战案例。通过模板匹配和二维码识别等实例,展示了如何高效集成VisionMaster算子到现有框架中,提升工业自动化视觉检测系统的灵活性和性能。

weixin_29280657的博客 270

B/S结构JavaEE WebApp的全自动安装包制作心得

<br />JavaEE的Web应用程序如今已大行其道,但其安装、配置、部署却一直繁琐无比,客观上阻碍了Web应用程序更大规模的推广和应用。因此,开发方制作一个集JDK、Web中间件、开源数据库的全自动安装程序很有必要。<br /> <br />本人经过多日的艰苦摸索而终于成功搞定一个具备上述功能的全自动安装程序。说明如下:<br />安装程序制作工具:Installshield 12 Premier,因为没银子只好用破解版:),简称IS12;<br />JSDK:Java 6.0;<br />应用服务器:

xiaoxin888888的专栏 996

YOLOv13改进策略【Neck篇】| GSConv 轻量卷积,Slim-Neck 减参数还不掉点

Neck 篇的第二篇继续"替换式"改进,这次的对象是 Neck 里的下采样卷积。GSConv 出自《Slim-neck by GSConv: a better design of lightweight detector》(2022),它的出发点:DWSConv(深度可分离)轻但"信息混不进通道",标准卷积重但表达好——GSConv 用GConv(分组卷积)混通道 + DWConv 补空间 + Channel Shuffle 打散,两全其美。

qq_53329130的博客 30

Installshield 打包

http://www.cnblogs.com/Cindy_weiwei/category/191167.html http://blog.youkuaiyun.com/sding/archive/2009/05/02/4143097.aspx http://www.hiadmin.org/testing/installshield-deletedir/ http://blog.csdn

高性能web站点—千石的专栏 514

【Android 11】使用Android Studio调试系统应用之Settings移植(三):构建Settings、SettingsLib项目文件

基于android 11,本系列文章力争实用,讲解使用AS调试系统app的方法,并提供了配套源下载,供学习调试。上一篇文章[Android 11]使用Android Studio调试系统应用(二):依赖分析、android.bp、静态和动态依赖,讲解了如何搭建编译服务器,如何下载AOSP源码,如何切换到AOSP的指定分支(android-11-r39),以及如何编译、解决编译错误、运行模拟器,本文将开始讲解如何构建Settings的AS工程文件! 走过、路过,有用过的同学,记得给个赞O(∩_∩)O哈!

上周的博客 2678

基于Simulink开发一个完整的直驱式永磁同步发电机DDPMSG仿真模型

需求分析直驱式永磁同步发电机(Direct-Drive Permanent Magnet Synchronous Generator, DDPMSG)广泛应用于风力发电、海洋能发电等可再生能源领域。与传统的齿轮箱驱动系统相比,DDPMSG具有结构简单、效率高、可靠性好等优点,能够直接将机械能转换为电能,减少了中间传动环节,降低了维护成本。本项目将基于Simulink平台,开发一个完整的DDPMSG仿真模型,模拟其在风力发电场景中的应用。我们将详细讲解如何设计和实现该系统,并结合实际应用案例进行说明。

MHD0815的博客 465

installshield安装程序,包括Mysql初始化、安装jre、配置环境变量、简单注册码生成...

曾经使用installshield制作的安装程序,包括Mysql初始化、安装jre、配置环境变量、简单注册码生成。 //////////////////////////////////////////////////////////////////////////////// // ...

本着分享 430

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Installshield2010实现web部署和数据库安装示例

在前面两篇文章中,介绍了如何利用Installshield集成Framework在安装程序中。http://www.cnblogs.com/downmoon/archive/2010/04/16/1713665.htmlhttp://www.cnblogs.com/downmoon/archive/2010/02/27/1674634.html今天做了下web部署和简单数据库的安装,...

dfdfadsf3443的博客 196

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

installshield mysql_实现Installshield对Php+mysql+apache做的程序在WINDOWS下打包

实现Installshield对Php+mysql+apache做的程序在WINDOWS下打包上一篇 /下一篇 2007-09-30 09:39:59/ 个人分类:For Test实现Installshield对Php+mysql+apache做的程序在WINDOWS下打包(转贴)undefinedundefined用Installshield对Php+mysql+apache做的程序在WIND...

weixin_39528994的博客 248

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

installshield mysql_InstallShield 调用批处理部署MySql数据库 | 学步园

说明:InstallShield版本: 2010需求:自动部署mysql数据库实现方法:先给客气机安装mysql的ODBC,以便测试客户输入的用户名密码正确,调用批处理自动部署数据库由于用ODBC执行mysql脚本导入数据时中文为乱码,这个一直没解决,所以没办法只有想到调用批处理实现Mysql自动部署了!导入需要三个文件,从MySql安装根目录下的Mysql.exe,和你自己的写的导入数据的批处理...

weixin_35123329的博客 428
上一篇: 关于通过jdbc导入Mysql表结构后,不重新连接Mysql会出现表级联(cascade)无效不工作的问题
下一篇: 在已部署Tomcat+MySql+Jdk后,如何打包部署应用
pstrunner
博客等级 码龄19年 50粉丝 52原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值