inno setup net vc 环境检测 apahce php jdk mssql server 打包成安装包

2024-04-12 07:38

本文主要是介绍inno setup net vc 环境检测 apahce php jdk mssql server 打包成安装包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 将sqlserver安装配置文件打包到setup.exe中

OutPut中所需要的文件及文件夹

 

inno setup脚本文件需要用到的文件

所有到到脚本文件

autoInstallapache.bat

@echo off
cd ..
set apacheroot=%~dp0%apache
echo %apacheroot%
cd %apacheroot% 
bin\httpd -k install
bin\httpd -k start

autoInstalljdk.bat

@echo off
cd ..
set jdkpath=%~dp0%javasdk
echo %jdkpath%
wmic ENVIRONMENT where "name='JAVA_HOME'" delete
wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%jdkpath%"
wmic ENVIRONMENT where "name='PATH' and username='<system>'" set VariableValue="%PATH%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin;"

autoUnInstallapache.bat

 

@echo off
cd ..
set apacheroot=%~dp0%apache
echo %apacheroot%
cd %apacheroot% 
bin\httpd -k stop
bin\httpd -k uninstall

 

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!#define MyAppName "平台"
#define MyAppVersion "1.0"
#define MyAppPublisher "责任公司"
#define MyAppURL "http://www.aaa.com"[Languages]
Name: "chs"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{60A75221-BCC5-447F-B69D-F12EFD3DCAA3}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\myprograme
DefaultGroupName={#MyAppName}
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
WizardStyle=modern
ArchitecturesAllowed=x64
ArchitecturesInstallIn64BitMode=x64
LicenseFile=LICENSE.txt
AlwaysRestart=yes[Files]
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
Source: "{src}\apache\*"; DestDir: "{app}\apache";Flags: external igNoreversion recursesubdirs createallsubdirs
Source: "{src}\php\*"; DestDir: "{app}\php";Flags: external igNoreversion recursesubdirs createallsubdirs
Source: "{src}\javasdk\*"; DestDir: "{app}\javasdk";Flags: external igNoreversion recursesubdirs createallsubdirs
Source: "{src}\msodbcsql.msi"; DestDir: "{app}";Flags: external igNoreversion recursesubdirs createallsubdirs
Source: "{src}\vc_redist.x64.exe"; DestDir: "{app}";Flags: external igNoreversion recursesubdirs createallsubdirs
Source: "{src}\autoInstallapache.bat"; DestDir: "{app}";Flags: external igNoreversion recursesubdirs createallsubdirs
Source: "{src}\autoInstalljdk.bat"; DestDir: "{app}";Flags: external igNoreversion recursesubdirs createallsubdirs
Source: "{src}\autoUnInstallapache.bat"; DestDir: "{app}";Flags: external igNoreversion recursesubdirs createallsubdirs
Source: "{src}\www\*"; DestDir: "{app}\www";Flags: external igNoreversion recursesubdirs createallsubdirs
Source: "ConfigurationFile_simple.ini";Flags: dontcopy noencryption
Source: "{src}\sqlserverdata\*"; DestDir: "{app}";Flags: external igNoreversion recursesubdirs createallsubdirs[Run]
Filename: "{src}\sqlserver_2012_xpr_x64_sp1\SETUP.EXE"; Parameters: "/ConfigurationFile={tmp}\ConfigurationFile_simple.ini"; Description: "sqlserver";Flags: waituntilterminated
Filename: "{app}\msodbcsql.msi"; Parameters: "/qb IACCEPTMSODBCSQLLICENSETERMS=YES"; Description: "msodbcsql"; Flags:shellexec waituntilterminated;设置java环境变量
Filename: "{app}\autoInstalljdk.bat";Flags: runascurrentuser waituntilterminated    [Code]
var
CheckNetEvnPageID:Integer;//CheckNetEvnPage的PageID
//CheckNetEvnPageBtnInstall:Tbutton;//安装net46按钮
CheckNetEvnPageDotNetLbl:TLabel; //显示DotNet是否安装标签
CheckNetEvnPageVC14x64NetLbl:TLabel; //显示DotNet是否安装标签
InstalledShowInfoPageID:Integer;//*****************************************************************************************************
//net环境检察函数
function IsDotNetDetected(version: string; service: cardinal): boolean;
// Indicates whether the specified version and service pack of the .NET Framework is installed.
//
// version -- Specify one of these strings for the required .NET Framework version:
//    'v1.1'          .NET Framework 1.1
//    'v2.0'          .NET Framework 2.0
//    'v3.0'          .NET Framework 3.0
//    'v3.5'          .NET Framework 3.5
//    'v4\Client'     .NET Framework 4.0 Client Profile
//    'v4\Full'       .NET Framework 4.0 Full Installation
//    'v4.5'          .NET Framework 4.5
//    'v4.5.1'        .NET Framework 4.5.1
//    'v4.5.2'        .NET Framework 4.5.2
//    'v4.6'          .NET Framework 4.6
//    'v4.6.1'        .NET Framework 4.6.1
//    'v4.6.2'        .NET Framework 4.6.2
//
// service -- Specify any non-negative integer for the required service pack level:
//    0               No service packs required
//    1, 2, etc.      Service pack 1, 2, etc. required
varkey, versionKey: string;install, release, serviceCount, versionRelease: cardinal;success: boolean;
beginversionKey := version;versionRelease := 0;// .NET 1.1 and 2.0 embed release number in version keyif version = 'v1.1' then beginversionKey := 'v1.1.4322';end else if version = 'v2.0' then beginversionKey := 'v2.0.50727';end// .NET 4.5 and newer install as update to .NET 4.0 Fullelse if Pos('v4.', version) = 1 then beginversionKey := 'v4\Full';case version of'v4.5':   versionRelease := 378389;'v4.5.1': versionRelease := 378675; // 378758 on Windows 8 and older'v4.5.2': versionRelease := 379893;'v4.6':   versionRelease := 393295; // 393297 on Windows 8.1 and older'v4.6.1': versionRelease := 394254; // 394271 on Windows 8.1 and older'v4.6.2': versionRelease := 394802; // 394806 on Windows 8.1 and olderend;end;// installation key group for all .NET versionskey := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + versionKey;// .NET 3.0 uses value InstallSuccess in subkey Setupif Pos('v3.0', version) = 1 then beginsuccess := RegQueryDWordValue(HKLM, key + '\Setup', 'InstallSuccess', install);end else beginsuccess := RegQueryDWordValue(HKLM, key, 'Install', install);end;// .NET 4.0 and newer use value Servicing instead of SPif Pos('v4', version) = 1 then beginsuccess := success and RegQueryDWordValue(HKLM, key, 'Servicing', serviceCount);end else beginsuccess := success and RegQueryDWordValue(HKLM, key, 'SP', serviceCount);end;// .NET 4.5 and newer use additional value Releaseif versionRelease > 0 then beginsuccess := success and RegQueryDWordValue(HKLM, key, 'Release', release);success := success and (release >= versionRelease);end;result := success and (install = 1) and (serviceCount >= service);
end;
//*****************************************************************************************************//*****检测vc环境方法**************
function IsVc14x64Detected():boolean;
var
str,CurVer:string;
beginRegQueryStringValue(HKLM, 'SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64', 'Version', CurVer);str := Copy(CurVer,2,2);log(str);if str = '14' thenbeginResult := true;end else beginResult := false;end;  
end;
//*****检测vc环境方法**************//****************安装VC14X64方法***********************************************
procedure InstallVc14X64;
var srcpath:string;
ResultCode:Integer;
begin//同安装setup同目录下的文件{src}srcpath :=  ExpandConstant('{src}\vc_redist.x64.exe');Exec(srcpath, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
end;
//****************安装VC14X64方法***********************************************procedure CheckNetEvnPageBtnVcInstallOnClick(Sender:TObject);
var
vc46installpackpath:string;
begin
vc46installpackpath:=ExpandConstant('{src}\vc_redist.x64.exe');if NOT  IsVc14x64Detected then beginif FileExists(vc46installpackpath) then begin//MsgBox('文件存在', mbInformation, MB_OK);InstallVc14X64;//调用安装InstallVc14X64方法。 end else   MsgBox(vc46installpackpath +'文件不存在。', mbInformation, MB_OK);end elseMsgBox('系统已安装VC14X64环境,不需要安装', mbInformation, MB_OK);
end;//**安装DotNet46方法************************
procedure InstallDotNet46;
var
srcpath:string;
ResultCode:Integer;
begin//同安装setup同目录下的文件{src}srcpath :=  ExpandConstant('{src}\NDP46-KB3045557-x86-x64-AllOS-ENU.exe');Exec(srcpath, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);log(srcpath);
end;
//**安装DotNet46方法************************//**************
procedure CheckNetEvnPageBtnInstallOnclick(Sender:TObject);
beginif NOT  IsDotNetDetected('v4.6',0)  then beginMsgBox('没有安装net46环境', mbInformation, MB_OK);end elseMsgBox('系统已安装net46环境', mbInformation, MB_OK);
end;//***************************************************************************************procedure InstallDotNet46ButtonOnClick(Sender:TObject);
var
net46installpackpath:string;
begin
net46installpackpath :=  ExpandConstant('{src}\NDP46-KB3045557-x86-x64-AllOS-ENU.exe');if NOT  IsDotNetDetected('v4.6',0) then beginif FileExists(net46installpackpath) then begin//MsgBox('文件存在', mbInformation, MB_OK);InstallDotNet46;//调用安装DotNet46方法。 end else   MsgBox(net46installpackpath +'文件不存在。', mbInformation, MB_OK);end elseMsgBox('系统已安装net46环境,不需要安装', mbInformation, MB_OK);
end;procedure CheckNetEvnPageBtnVcCheckOnClick(Sender:TObject);
beginif NOT   IsVc14x64Detected     then beginMsgBox('vc14x64没有安装', mbInformation, MB_OK);end elseMsgBox('vc14x64已安装', mbInformation, MB_OK);
end;//*******************AboutButtonOnClick****************************************
procedure AboutButtonOnClick(Sender: TObject);
beginMsgBox('华远智能信息发布系统V1.0。', mbInformation, mb_Ok);
end;
//*******************AboutButtonOnClick****************************************//*********创建自定义向导页面**************************************************
procedure CreateTheWizardPages;
var
CheckNetEvnPage:TwizardPage;//net环境检测页面
CheckNetEvnPageBtn:Tbutton;//检查按钮
CheckNetEvnPageBtnInstall:Tbutton;//安装net46按钮CheckNetEvnPageBtnVcInstall:Tbutton;//安装vc环境按钮InstalledShowInfoPage:TwizardPage;
InstalledShowInfoPageLbl1:Tlabel;//请使用谷歌浏览器登录
InstalledShowInfoPageLbl2:Tlabel;//http://localhost:18080
InstalledShowInfoPageLbl3:Tlabel;//用户名:admin,密码:admin
InstalledShowInfoPageLbl4:Tlabel;
InstalledShowInfoPageLbl5:Tlabel;
InstalledShowInfoPageLbl6:Tlabel;CheckNetEvnPageBtnVcCheck:Tbutton;
begin{net环境检查}CheckNetEvnPage:=CreateCustomPage(wpLicense, '环境检查', '安装环境是必须的。');CheckNetEvnPageID:=CheckNetEvnPage.ID;CheckNetEvnPageDotNetLbl:=TLabel.Create(CheckNetEvnPage);CheckNetEvnPageDotNetLbl.Parent:=CheckNetEvnPage.Surface;CheckNetEvnPageDotNetLbl.Caption:='dotnet46';CheckNetEvnPageBtn:=TButton.Create(CheckNetEvnPage);CheckNetEvnPageBtn.Parent:=CheckNetEvnPage.Surface;CheckNetEvnPageBtn.Caption:='检测net环境';CheckNetEvnPageBtn.Onclick:=@CheckNetEvnPageBtnInstallOnclick;CheckNetEvnPageBtn.Top:= CheckNetEvnPageDotNetLbl.Top;CheckNetEvnPageBtn.Left:= CheckNetEvnPageDotNetLbl.Left + 200;CheckNetEvnPageBtnInstall:=TButton.Create(CheckNetEvnPage);CheckNetEvnPageBtnInstall.Parent:=CheckNetEvnPage.Surface;CheckNetEvnPageBtnInstall.Caption:='安装net环境';CheckNetEvnPageBtnInstall.Onclick:=@InstallDotNet46ButtonOnClick;CheckNetEvnPageBtnInstall.Top:= CheckNetEvnPageBtn.Top;CheckNetEvnPageBtnInstall.Left:= CheckNetEvnPageBtn.Left + 200;CheckNetEvnPageVC14x64NetLbl:=TLabel.Create(CheckNetEvnPage);CheckNetEvnPageVC14x64NetLbl.Parent:=CheckNetEvnPage.Surface;CheckNetEvnPageVC14x64NetLbl.Caption:='VC16X64';CheckNetEvnPageVC14x64NetLbl.Top:= CheckNetEvnPageDotNetLbl.Top + 40;CheckNetEvnPageBtnVcCheck:=TButton.Create(CheckNetEvnPage);CheckNetEvnPageBtnVcCheck.Parent:=CheckNetEvnPage.Surface;CheckNetEvnPageBtnVcCheck.Caption:='检测vc环境';CheckNetEvnPageBtnVcCheck.Onclick:=@CheckNetEvnPageBtnVcCheckOnClick;CheckNetEvnPageBtnVcCheck.Top:= CheckNetEvnPageBtn.Top + 40;CheckNetEvnPageBtnVcCheck.Left:= CheckNetEvnPageBtn.Left CheckNetEvnPageBtnVcInstall:=TButton.Create(CheckNetEvnPage);CheckNetEvnPageBtnVcInstall.Parent:=CheckNetEvnPage.Surface;CheckNetEvnPageBtnVcInstall.Caption:='安装vc环境';CheckNetEvnPageBtnVcInstall.Onclick:=@CheckNetEvnPageBtnVcInstallOnClick;CheckNetEvnPageBtnVcInstall.Top:= CheckNetEvnPageBtn.Top + 40;CheckNetEvnPageBtnVcInstall.Left:= CheckNetEvnPageBtn.Left + 200 {安装完显示信息}InstalledShowInfoPage:=CreateCustomPage(wpInstalling, '安装完成', '已安装成功,请详细阅读操作手册。');//InstalledShowInfoPage:=CreateCustomPage(CheckNetEvnPageID, '安装完成', '已安装成功,请详细阅读操作手册。');InstalledShowInfoPageID:=InstalledShowInfoPage.ID;InstalledShowInfoPageLbl1:=TLabel.Create(InstalledShowInfoPage);InstalledShowInfoPageLbl1.Parent:=InstalledShowInfoPage.Surface;InstalledShowInfoPageLbl1.Caption:='请使用谷歌浏览器登录';InstalledShowInfoPageLbl2:=TLabel.Create(InstalledShowInfoPage);InstalledShowInfoPageLbl2.Parent:=InstalledShowInfoPage.Surface;InstalledShowInfoPageLbl2.Caption:='http://localhost:18080';InstalledShowInfoPageLbl2.Top:=InstalledShowInfoPageLbl1.Top;InstalledShowInfoPageLbl2.Left:=InstalledShowInfoPageLbl1.Left + 200;InstalledShowInfoPageLbl2.Font.Color:=clBlue;InstalledShowInfoPageLbl2.Font.Style:=[fsUnderline];InstalledShowInfoPageLbl3:=TLabel.Create(InstalledShowInfoPage);InstalledShowInfoPageLbl3.Parent:=InstalledShowInfoPage.Surface;InstalledShowInfoPageLbl3.Caption:='用户名:admin,密码:admin';InstalledShowInfoPageLbl3.Top:=InstalledShowInfoPageLbl1.Top  + 20;InstalledShowInfoPageLbl3.Left:=InstalledShowInfoPageLbl1.Left + 200;InstalledShowInfoPageLbl4:=TLabel.Create(InstalledShowInfoPage);InstalledShowInfoPageLbl4.Parent:=InstalledShowInfoPage.Surface;InstalledShowInfoPageLbl4.Caption:='请详细阅读:';InstalledShowInfoPageLbl4.Top:=InstalledShowInfoPageLbl1.Top  + 60;InstalledShowInfoPageLbl4.Left:=InstalledShowInfoPageLbl1.Left;InstalledShowInfoPageLbl5:=TLabel.Create(InstalledShowInfoPage);InstalledShowInfoPageLbl5.Parent:=InstalledShowInfoPage.Surface;InstalledShowInfoPageLbl5.Caption:='华远智能信息发布系统操作手册.pdf';InstalledShowInfoPageLbl5.Top:=InstalledShowInfoPageLbl4.Top;InstalledShowInfoPageLbl5.Left:=InstalledShowInfoPageLbl1.Left + 200;InstalledShowInfoPageLbl5.Font.Color:=clBlue;InstalledShowInfoPageLbl5.Font.Style:=[fsUnderline];InstalledShowInfoPageLbl6:=TLabel.Create(InstalledShowInfoPage);InstalledShowInfoPageLbl6.Parent:=InstalledShowInfoPage.Surface;InstalledShowInfoPageLbl6.Caption:='请记住这些关键信息,以后会经常用到。';InstalledShowInfoPageLbl6.Top:=InstalledShowInfoPageLbl5.Top + 60;InstalledShowInfoPageLbl6.Font.Color:=clRed;end;
//************创建自定义向导页面结束*********************************************** //*********点击URLLabel事件****************************************************
procedure URLLabelOnClick(Sender: TObject);
varErrorCode: Integer;
beginShellExecAsOriginalUser('open', 'http://www.hysy-it.com/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;
//*********点击URLLabel事件****************************************************procedure CreateAboutButtonAndURLLabel(ParentForm: TSetupForm; CancelButton: TNewButton);
varAboutButton: TNewButton;URLLabel: TNewStaticText;
beginAboutButton := TNewButton.Create(ParentForm);AboutButton.Left := ParentForm.ClientWidth - CancelButton.Left - CancelButton.Width;AboutButton.Top := CancelButton.Top;AboutButton.Width := CancelButton.Width;AboutButton.Height := CancelButton.Height;AboutButton.Anchors := [akLeft, akBottom];AboutButton.Caption := '&关于...';AboutButton.OnClick := @AboutButtonOnClick;AboutButton.Parent := ParentForm;URLLabel := TNewStaticText.Create(ParentForm);URLLabel.Caption := 'www.hysy-it.com';URLLabel.Cursor := crHand;URLLabel.OnClick := @URLLabelOnClick;URLLabel.Parent := ParentForm;{ Alter Font *after* setting Parent so the correct defaults are inherited first }URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];URLLabel.Font.Color := clHotLightURLLabel.Top := AboutButton.Top + AboutButton.Height - URLLabel.Height - 2;URLLabel.Left := AboutButton.Left + AboutButton.Width + ScaleX(20);URLLabel.Anchors := [akLeft, akBottom];
end;
//**************************CreateAboutButtonAndURLLabel*******************//***************************************************************************************
procedure InitializeWizard();
beginWizardForm.LICENSEACCEPTEDRADIO.Checked:=true;CreateTheWizardPages;CreateAboutButtonAndURLLabel(WizardForm, WizardForm.CancelButton);
end;
//***************************************************************************************procedure InitializeUninstallProgressForm();
beginCreateAboutButtonAndURLLabel(UninstallProgressForm, UninstallProgressForm.CancelButton);
end;//*****************************************************************************************
function NextButtonClick(CurPageID:Integer): Boolean;
beginif CurpageId=CheckNetEvnPageID thenbeginif not IsDotNetDetected('v4.6', 0) then beginMsgBox('系统没有net46环境,请安装net46环境。', mbInformation, MB_OK);end elseif not IsVc14x64Detected then beginMsgBox('系统没有vc14x64环境,请安装vc14x64环境。', mbInformation, MB_OK);end elseresult:=true;end elseresult:=true;
end;
//*********************************************************************************************procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begincase CurUninstallStep ofusUninstall:begin//MsgBox('CurUninstallStepChanged:' #13#13 'Uninstall is about to start.', mbInformation, MB_OK)// ...insert code to perform pre-uninstall tasks here...end;usPostUninstall:begin//MsgBox('CurUninstallStepChanged:' #13#13 'Uninstall just finished.', mbInformation, MB_OK);// ...insert code to perform post-uninstall tasks here...end;end;
end;//**********************************************************
//文件内容替换方法
//    SrcFIle:文件路径   
//    sFrom:源字符
//    STo: 填的的字符
procedure FileReplace(SrcFile, sFrom, sTo: String);
varUnicodeStr:String;FileContent: AnsiString;
begin//Load srcfile to a stringLoadStringFromFile(SrcFile, FileContent);//Replace Fraomstring by toString in file string content//StringChange (sTo,'/', '\');UnicodeStr :=String(FileContent);StringChangeEx (UnicodeStr, sFrom, sTo,True);//Replace old content srcfile by the new contentDeleteFile(SrcFile);SaveStringToFile(SrcFile,UnicodeStr, True);
end;
//**********************************************************//************************************************************
procedure CurStepChanged(CurStep: TSetupStep);
var
fileName:String;
SRVROOTPATH:String;//apahce 工作目录
WWWPATH:String; //网站目录
PHPPATH:String; //http-php.conf
PHPINIPATH:String;//php.ini 的扩展目录
ErrorCode: Integer;beginSRVROOTPATH :=ExpandConstant('{app}\apache');WWWPATH :=ExpandConstant('{app}\www');PHPPATH:=ExpandConstant('{app}');PHPINIPATH:=ExpandConstant('{app}\php\ext');//SqlserverIni:=ExpandConstant('{app}\sqlserverdata');//复制完文件后执行if CurStep=ssPostInstall thenbeginfilename := ExpandConstant('{app}\apache\conf\httpd.conf');FileReplace(filename, '@@SRVROOT@@',SRVROOTPATH);filename := ExpandConstant('{app}\apache\conf\httpd.conf');FileReplace(filename, '@@www@@',WWWPATH);filename := ExpandConstant('{app}\apache\conf\extra\httpd-php.conf');FileReplace(filename, '@@php@@',PHPPATH);filename := ExpandConstant('{app}\php\php.ini');FileReplace(filename, '@@extensiondir@@',PHPINIPATH);end;if CurStep=ssDone   thenbeginShellExecAsOriginalUser('open', 'http://localhost:18080', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);end;end;
//****************************************************************//主要是程序调用“下一步”,然后在ShouldSkipPage函数中进行跳过。
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=wpReady thenresult := true;
end;function InitializeSetup: Boolean;
begin// Show the contents of Readme.txt (non Unicode) in a message boxExtractTemporaryFile('ConfigurationFile_simple.ini');//log(ExpandConstant('{tmp}\ConfigurationFile_simple.ini'));Result := True;
end;procedure CurPageChanged(CurPageID: Integer);
var 
SQLSERVERDATAPATH:string;
SqlInifilename:string;
ResultCode:Integer;beginif CurPageID=wpInstalling then begin//修改SQLSERVER实例安装路径SQLSERVERDATAPATH:=ExpandConstant('{app}\sqlserverdata'); SqlInifilename := ExpandConstant('{tmp}\ConfigurationFile_simple.ini');FileReplace(SqlInifilename, '@@INSTANCEDIR@@',SQLSERVERDATAPATH);end;if CurPageID=InstalledShowInfoPageID then beginExec(ExpandConstant('{app}\autoInstallapache.bat'),'','',SW_SHOW,ewWaitUntilTerminated,ResultCode);//重启apache脚本end;    
end;

 

这篇关于inno setup net vc 环境检测 apahce php jdk mssql server 打包成安装包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/896515

相关文章

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

springboot3打包成war包,用tomcat8启动

1、在pom中,将打包类型改为war <packaging>war</packaging> 2、pom中排除SpringBoot内置的Tomcat容器并添加Tomcat依赖,用于编译和测试,         *依赖时一定设置 scope 为 provided (相当于 tomcat 依赖只在本地运行和测试的时候有效,         打包的时候会排除这个依赖)<scope>provided

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像