655 lines
18 KiB
Plaintext
655 lines
18 KiB
Plaintext
unit DeCrmHeInstMain;
|
||
|
||
interface
|
||
|
||
uses
|
||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
||
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,
|
||
Vcl.Imaging.pngimage, PngImageList, System.ImageList, Vcl.ImgList,
|
||
Vcl.WinXPanels, Vcl.ComCtrls, VirtualTrees;
|
||
|
||
type
|
||
PInstEnt = ^TInstEnt;
|
||
TInstEnt = record
|
||
sName,
|
||
sDesc: String;
|
||
end;
|
||
|
||
TDlgeCrmHeInstMain = class(TForm)
|
||
seMain: TShape;
|
||
Label1: TLabel;
|
||
imgLogo: TImage;
|
||
imgProg: TImage;
|
||
imgMain: TImage;
|
||
imgInstall: TImage;
|
||
imgMin: TImage;
|
||
imgExit: TImage;
|
||
imgNext: TImage;
|
||
imgPrev: TImage;
|
||
imgBtns: TPngImageList;
|
||
imgProgs: TPngImageCollection;
|
||
imgBtns2: TPngImageList;
|
||
cpMain: TCardPanel;
|
||
cdWelcome: TCard;
|
||
Label2: TLabel;
|
||
Label3: TLabel;
|
||
Label4: TLabel;
|
||
cdLicense: TCard;
|
||
Label5: TLabel;
|
||
Label6: TLabel;
|
||
mmLicense: TMemo;
|
||
rdAgree: TRadioButton;
|
||
rdNoAgree: TRadioButton;
|
||
cdInfo: TCard;
|
||
Label7: TLabel;
|
||
Label8: TLabel;
|
||
Label9: TLabel;
|
||
Label10: TLabel;
|
||
edEmpNo: TEdit;
|
||
edVpnId: TEdit;
|
||
cdInstall: TCard;
|
||
Label11: TLabel;
|
||
imgProcess: TImage;
|
||
Label12: TLabel;
|
||
pg: TProgressBar;
|
||
vtList: TVirtualStringTree;
|
||
cdCompleted: TCard;
|
||
lbCompleted: TLabel;
|
||
lbCompletedMsg: TLabel;
|
||
lbExitMsg: TLabel;
|
||
tExit: TTimer;
|
||
cdInstalled: TCard;
|
||
imgBtnInit: TPngImageCollection;
|
||
imgDelete: TImage;
|
||
imgReinstall: TImage;
|
||
Label15: TLabel;
|
||
Label16: TLabel;
|
||
imgInstalled: TImage;
|
||
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
|
||
Shift: TShiftState; X, Y: Integer);
|
||
procedure imgMinClick(Sender: TObject);
|
||
procedure imgExitClick(Sender: TObject);
|
||
procedure imgMinMouseEnter(Sender: TObject);
|
||
procedure imgMinMouseLeave(Sender: TObject);
|
||
procedure imgPrevMouseEnter(Sender: TObject);
|
||
procedure imgPrevMouseLeave(Sender: TObject);
|
||
procedure imgNextClick(Sender: TObject);
|
||
procedure imgPrevClick(Sender: TObject);
|
||
procedure rdAgreeClick(Sender: TObject);
|
||
procedure rdNoAgreeClick(Sender: TObject);
|
||
procedure tExitTimer(Sender: TObject);
|
||
procedure imgDeleteMouseEnter(Sender: TObject);
|
||
procedure imgDeleteMouseLeave(Sender: TObject);
|
||
procedure imgReinstallClick(Sender: TObject);
|
||
procedure imgDeleteClick(Sender: TObject);
|
||
procedure vtListGetNodeDataSize(Sender: TBaseVirtualTree;
|
||
var NodeDataSize: Integer);
|
||
procedure vtListFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||
procedure vtListGetHint(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||
Column: TColumnIndex; var LineBreakStyle: TVTTooltipLineBreakStyle;
|
||
var HintText: string);
|
||
procedure vtListGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||
Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
|
||
procedure edVpnIdKeyPress(Sender: TObject; var Key: Char);
|
||
private
|
||
{ Private declarations }
|
||
procedure SetImgBtn(aImgList: TPngImageList; imgBtn: TImage; nImgIdx: Integer);
|
||
procedure SetImgCtrl(aImgList: TPngImageCollection; imgCtrl: TImage; nImgIdx: Integer);
|
||
public
|
||
{ Public declarations }
|
||
Constructor Create(aOwner: TComponent); override;
|
||
|
||
procedure process_WM_SYSCOMMAND(var msg: TWMSysCommand); Message WM_SYSCOMMAND;
|
||
end;
|
||
|
||
function ProcessInstall(aInstForm: TDlgeCrmHeInstMain; bStartSvc: Boolean = false): Boolean;
|
||
|
||
var
|
||
DlgeCrmHeInstMain: TDlgeCrmHeInstMain;
|
||
|
||
implementation
|
||
|
||
uses
|
||
Define, Tocsg.Path, ProcessUninstall, GlobalDefine, Tocsg.VirtualTreeViewUtil,
|
||
Tocsg.Safe, Tocsg.Exception, System.Zip, ManagerModel, Tocsg.Service,
|
||
Winapi.WinSvc, Tocsg.Process, superobject, Tocsg.Shell, Tocsg.Files;
|
||
|
||
{$R *.dfm}
|
||
|
||
var
|
||
_nExitSec: Integer = 5;
|
||
|
||
function ProcessInstall(aInstForm: TDlgeCrmHeInstMain; bStartSvc: Boolean = false): Boolean;
|
||
|
||
procedure AddInstEnt(sName, sDesc: String);
|
||
var
|
||
pData: PInstEnt;
|
||
begin
|
||
if aInstForm <> nil then
|
||
begin
|
||
pData := VT_AddChildData(aInstForm.vtList);
|
||
pData.sName := sName;
|
||
pData.sDesc := sDesc;
|
||
aInstForm.pg.Position := aInstForm.pg.Position + 1;
|
||
Application.ProcessMessages;
|
||
end;
|
||
end;
|
||
|
||
var
|
||
sSysDir,
|
||
sInstDir,
|
||
sResPath: String;
|
||
AgentModel: TAgentModel;
|
||
|
||
function GetRes(sId: String): Boolean;
|
||
var
|
||
res: TResourceStream;
|
||
begin
|
||
Result := false;
|
||
|
||
if FileExists(sResPath) then
|
||
DeleteFile(sResPath);
|
||
|
||
try
|
||
res := TResourceStream.Create(HInstance, sId, 'raw');
|
||
if res <> nil then
|
||
begin
|
||
res.SaveToFile(sResPath);
|
||
res.Free;
|
||
Result := true;
|
||
end;
|
||
except
|
||
on E: Exception do
|
||
ETgException.TraceException(E, Format('Fail .. GetRes(), ID="%s"', [sId]));
|
||
end;
|
||
end;
|
||
|
||
function ExtrZip(sDestDir: String; bIgrErr: Boolean = false): Boolean;
|
||
begin
|
||
Result := bIgrErr or false;
|
||
if ForceDirectories(sDestDir) then
|
||
begin
|
||
try
|
||
TZipFile.ExtractZipFile(sResPath, sDestDir);
|
||
Result := true;
|
||
except
|
||
on E: Exception do
|
||
ETgException.TraceException(E, Format('Fail .. ExtrZip(), ExtrDir="%s"', [sDestDir]));
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
var
|
||
ProcInfo: TProcessInformation;
|
||
begin
|
||
Result := false;
|
||
|
||
if aInstForm <> nil then
|
||
begin
|
||
aInstForm.pg.Position := 0;
|
||
aInstForm.pg.Max := 6;
|
||
end else begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD>Ȱ<EFBFBD> <20><><EFBFBD>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD> 22_0517 14:24:38 kku
|
||
sInstDir := GetProgramFilesDir + DIR_HE;
|
||
if not DirectoryExists(sInstDir) then
|
||
exit;
|
||
|
||
if not FileExists(sInstDir + 'conf\' + DAT_AGENT) and
|
||
not FileExists(sInstDir + 'conf\' + PROP_USERINFO) then
|
||
exit;
|
||
end;
|
||
|
||
try
|
||
ZeroMemory(@ProcInfo, SizeOf(ProcInfo));
|
||
if GetProcessPidByName(EXE_HE) <> 0 then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> EXE_HE <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD> 22_0517 13:59:04 kku
|
||
sInstDir := GetProgramFilesDir + DIR_TG;
|
||
if ForceDirectories(sInstDir) then
|
||
begin
|
||
sResPath := sInstDir + '$InstData';
|
||
if not GetRes('RS_HEBIN') then
|
||
exit;
|
||
if not ExtrZip(sInstDir + 'Temp\') then
|
||
exit;
|
||
DeleteFile(sResPath);
|
||
|
||
if CopyFile(PChar(sInstDir + 'Temp\' + EXE_HE), PChar(sInstDir + EXE_HE), false) then
|
||
begin
|
||
Sleep(500);
|
||
DeleteDir(sInstDir + 'Temp\', true, true);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>缳ġ<E7BCB3><C4A1><EFBFBD><EFBFBD> EXE_HE <20>״°<D7B4> <20><><EFBFBD><EFBFBD> VPN<50><4E> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʵ<EFBFBD><CAB5><EFBFBD> <20><><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>. 22_0511 15:26:13 kku
|
||
var sCurPath: String := sInstDir + EXE_HE;
|
||
if FileExists(sCurPath) then
|
||
begin
|
||
Sleep(1000);
|
||
var O: ISuperObject := SO;
|
||
O.I['M'] := 11; // MODE_DUMMY
|
||
O.B['SD'] := true;
|
||
O.S['AM'] := MUTEX_INSTALLER;
|
||
var sParam: String := GetRunExePathDir + 'reqprm.json';
|
||
if SaveJsonObjToFile(O, sParam) then
|
||
ProcInfo := ExecuteAppAsUser(GetCurrentProcessId, sCurPath, Format('-i "%s"', [sParam]), SW_HIDE)
|
||
else
|
||
DeleteFile(sCurPath);
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
AddInstEnt('Tocsg.Installation.Initator', 'Initiate application check');
|
||
|
||
UninstallCrmHE(ProcInfo.dwProcessId, aInstForm = nil {true = <20><>ġ});
|
||
|
||
sInstDir := GetProgramFilesDir + DIR_HE;
|
||
if not ForceDirectories(sInstDir) then
|
||
exit;
|
||
sResPath := sInstDir + '$InstData';
|
||
|
||
AddInstEnt('Tocsg.Installation.Service', 'Service check');
|
||
if GetRes('RS_KVBIN') then
|
||
begin
|
||
// <20>̰<EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD>. 22_0517 16:39:29 kku
|
||
ExtrZip(sInstDir + 'bin\');
|
||
// if not ExtrZip(sInstDir + 'bin\') then
|
||
// exit;
|
||
end;
|
||
|
||
AddInstEnt('Tocsg.Installation.Component', 'Component check');
|
||
if not GetRes('RS_CONF') then
|
||
exit;
|
||
if not ExtrZip(sInstDir + 'conf\') then
|
||
exit;
|
||
|
||
AddInstEnt('Tocsg.Installation.LiceseMgr', 'License check');
|
||
if not GetRes('RS_HEBIN') then
|
||
exit;
|
||
if not ExtrZip(sInstDir) then
|
||
exit;
|
||
|
||
// MG.exe<78><65><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ұ<EFBFBD> <20><><EFBFBD><EFBFBD>? DLL <20><><EFBFBD><EFBFBD>
|
||
if not GetRes('RS_DLLS') then
|
||
exit;
|
||
sSysDir := GetSystemDir;
|
||
if not ExtrZip(sSysDir, true) then
|
||
exit;
|
||
DeleteFile(sResPath);
|
||
|
||
AddInstEnt('Tocsg.Installation.Executable', 'Environment check');
|
||
|
||
if aInstForm <> nil then
|
||
begin
|
||
Guard(AgentModel, TAgentModel.Create);
|
||
AgentModel.EmpNo := aInstForm.edEmpNo.Text;
|
||
AgentModel.VpnInfo := aInstForm.edVpnId.Text;
|
||
AgentModel.Save(sInstDir + 'conf\' + DAT_AGENT);
|
||
end;
|
||
|
||
AddInstEnt('Tocsg.Installation.ServiceManager', 'Windows Service Registration');
|
||
|
||
if FileExists(sInstDir + DLL_SV) then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DLL <20><><EFBFBD><EFBFBD>
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DLL<4C><4C> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20><><EFBFBD>α<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰ߵƴ<DFB5>... 22_0511 17:21:35 kku
|
||
if not MoveFile(PChar(sInstDir + DLL_SV), PChar(sSysDir + DLL_SV)) then
|
||
exit;
|
||
Sleep(1000);
|
||
|
||
AddInstEnt('Tocsg.Installation.Validator', 'Validating the installation');
|
||
if ServiceExists(NAME_SERVICE) or
|
||
InstallServiceDll(sSysDir + DLL_SV,
|
||
SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START) then
|
||
begin
|
||
Sleep(500);
|
||
if bStartSvc then
|
||
begin
|
||
Result := ServiceStart(NAME_SERVICE);
|
||
SetVisibleServce(NAME_SERVICE, false);
|
||
end else
|
||
Result := true;
|
||
end;
|
||
end else begin
|
||
if not MoveFile(PChar(sInstDir + EXE_SV), PChar(sSysDir + EXE_SV)) then
|
||
exit;
|
||
Sleep(1000);
|
||
|
||
AddInstEnt('Tocsg.Installation.Validator', 'Validating the installation');
|
||
if InstallService(NAME_SERVICE, sSysDir + EXE_SV, NAME_SERVICE,
|
||
SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START) then
|
||
begin
|
||
Sleep(500);
|
||
if bStartSvc then
|
||
begin
|
||
Result := ServiceStart(NAME_SERVICE);
|
||
SetVisibleServce(NAME_SERVICE, false);
|
||
end else
|
||
Result := true;
|
||
end;
|
||
end;
|
||
except
|
||
on E: Exception do
|
||
ETgException.TraceException(E, 'Fail .. ProcessInstall()');
|
||
end;
|
||
end;
|
||
|
||
{ TDlgeCrmHeInstMain }
|
||
|
||
Constructor TDlgeCrmHeInstMain.Create(aOwner: TComponent);
|
||
|
||
procedure InitCtrls;
|
||
var
|
||
i: Integer;
|
||
sInstDir: String;
|
||
begin
|
||
SetImgBtn(imgBtns, imgMin, 0);
|
||
SetImgBtn(imgBtns, imgExit, 2);
|
||
SetImgBtn(imgBtns2, imgPrev, 0);
|
||
SetImgBtn(imgBtns2, imgNext, 2);
|
||
SetImgCtrl(imgProgs, imgProg, 0);
|
||
|
||
sInstDir := GetProgramFilesDir + DIR_HE;
|
||
if DirectoryExists(sInstDir) and
|
||
FileExists(sInstDir + EXE_HE) then
|
||
begin
|
||
SetImgCtrl(imgBtnInit, imgDelete, imgDelete.Tag);
|
||
SetImgCtrl(imgBtnInit, imgReinstall, imgReinstall.Tag);
|
||
imgNext.Visible := false;
|
||
cpMain.ActiveCard := cdInstalled;
|
||
end else
|
||
cpMain.ActiveCard := cdWelcome;
|
||
end;
|
||
|
||
begin
|
||
Inherited Create(aOwner);
|
||
Caption := APP_NAME;
|
||
InitCtrls;
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.SetImgBtn(aImgList: TPngImageList; imgBtn: TImage; nImgIdx: Integer);
|
||
begin
|
||
aImgList.GetIcon(nImgIdx, imgBtn.Picture.Icon);
|
||
imgBtn.Repaint
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.SetImgCtrl(aImgList: TPngImageCollection; imgCtrl: TImage; nImgIdx: Integer);
|
||
begin
|
||
if (nImgIdx > -1) and (aImgList.Items.Count > nImgIdx) then
|
||
imgCtrl.Picture.Assign(aImgList.Items[nImgIdx].PngImage);
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.tExitTimer(Sender: TObject);
|
||
begin
|
||
Dec(_nExitSec);
|
||
if _nExitSec <= 0 then
|
||
begin
|
||
tExit.Enabled := false;
|
||
Close;
|
||
exit;
|
||
end;
|
||
|
||
lbExitMsg.Caption := Format('<27><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> %d <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>.', [_nExitSec]);
|
||
Application.ProcessMessages;
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.vtListFreeNode(Sender: TBaseVirtualTree;
|
||
Node: PVirtualNode);
|
||
var
|
||
pData: PInstEnt;
|
||
begin
|
||
pData := Sender.GetNodeData(Node);
|
||
Finalize(pData^);
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.vtListGetHint(Sender: TBaseVirtualTree;
|
||
Node: PVirtualNode; Column: TColumnIndex;
|
||
var LineBreakStyle: TVTTooltipLineBreakStyle; var HintText: string);
|
||
begin
|
||
HintText := vtList.Text[Node, Column];
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.vtListGetNodeDataSize(Sender: TBaseVirtualTree;
|
||
var NodeDataSize: Integer);
|
||
begin
|
||
NodeDataSize := SizeOf(TInstEnt);
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.vtListGetText(Sender: TBaseVirtualTree;
|
||
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
|
||
var CellText: string);
|
||
var
|
||
pData: PInstEnt;
|
||
begin
|
||
pData := Sender.GetNodeData(Node);
|
||
|
||
case Column of
|
||
0 : CellText := IntToStr(Node.Index + 1);
|
||
1 : CellText := pData.sName;
|
||
2 : CellText := pData.sDesc;
|
||
end;
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.edVpnIdKeyPress(Sender: TObject; var Key: Char);
|
||
begin
|
||
if Key = #13 then
|
||
begin
|
||
Key := #0;
|
||
imgNextClick(nil);
|
||
exit;
|
||
end;
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.FormMouseDown(Sender: TObject;
|
||
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||
begin
|
||
ReleaseCapture;
|
||
SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.imgDeleteClick(Sender: TObject);
|
||
begin
|
||
if MessageBox(Handle, PChar('<27><><EFBFBD><EFBFBD><EFBFBD>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?'),
|
||
PChar(Caption), MB_ICONQUESTION or MB_YESNO) = IDNO then exit;
|
||
|
||
if UninstallCrmHE then
|
||
begin
|
||
imgNext.Tag := 4;
|
||
imgNext.Visible := true;
|
||
SetImgBtn(imgBtns2, imgNext, imgNext.Tag);
|
||
SetImgCtrl(imgProgs, imgProg, 4);
|
||
tExit.Enabled := true;
|
||
imgInstalled.Visible := false;
|
||
lbCompleted.Caption := '<27><><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD>';
|
||
lbCompletedMsg.Caption := 'QS-eCRM Home Edition <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>.';
|
||
cpMain.ActiveCard := cdCompleted;
|
||
Application.ProcessMessages;
|
||
end else begin
|
||
MessageBox(Handle, PChar('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.'+#13+#10+'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٽ<EFBFBD> <20>õ<EFBFBD><C3B5><EFBFBD> <20>ֽʽÿ<CABD>.'),
|
||
PChar(Caption), MB_ICONWARNING or MB_OK);
|
||
end;
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.imgDeleteMouseEnter(Sender: TObject);
|
||
begin
|
||
if Sender is TImage then
|
||
SetImgCtrl(imgBtnInit, TImage(Sender), TImage(Sender).Tag + 1);
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.imgDeleteMouseLeave(Sender: TObject);
|
||
begin
|
||
if Sender is TImage then
|
||
SetImgCtrl(imgBtnInit, TImage(Sender), TImage(Sender).Tag);
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.imgExitClick(Sender: TObject);
|
||
begin
|
||
if not tExit.Enabled then
|
||
begin
|
||
if MessageBox(Handle, PChar('<27><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?'),
|
||
PChar(Caption), MB_ICONQUESTION or MB_YESNO) = IDNO then exit;
|
||
end;
|
||
|
||
Close;
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.imgMinClick(Sender: TObject);
|
||
begin
|
||
WindowState := TWindowState.wsMinimized;
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.imgMinMouseEnter(Sender: TObject);
|
||
begin
|
||
if Sender is TImage then
|
||
SetImgBtn(imgBtns, TImage(Sender), TImage(Sender).Tag + 1);
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.imgMinMouseLeave(Sender: TObject);
|
||
begin
|
||
if Sender is TImage then
|
||
SetImgBtn(imgBtns, TImage(Sender), TImage(Sender).Tag);
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.imgNextClick(Sender: TObject);
|
||
begin
|
||
if imgNext.Tag = 4 then
|
||
begin
|
||
Close;
|
||
exit;
|
||
end;
|
||
|
||
case cpMain.ActiveCardIndex of
|
||
0 :
|
||
begin
|
||
imgPrev.Visible := true;
|
||
cpMain.ActiveCard := cdLicense;
|
||
|
||
imgNext.Enabled := rdAgree.Checked;
|
||
if imgNext.Enabled then
|
||
SetImgBtn(imgBtns2, imgNext, imgNext.Tag)
|
||
else
|
||
SetImgBtn(imgBtns2, imgNext, imgNext.Tag + 1);
|
||
SetImgCtrl(imgProgs, imgProg, 1);
|
||
end;
|
||
1 :
|
||
begin
|
||
cpMain.ActiveCard := cdInfo;
|
||
SetImgCtrl(imgProgs, imgProg, 2);
|
||
end;
|
||
2 :
|
||
begin
|
||
edEmpNo.Text := Trim(edEmpNo.Text);
|
||
edVpnId.Text := Trim(edVpnId.Text);
|
||
if edEmpNo.Text = '' then
|
||
begin
|
||
MessageBox(Handle, PChar('"<22><><EFBFBD><EFBFBD>"<22><> <20>Է<EFBFBD><D4B7><EFBFBD> <20>ֽʽÿ<CABD>.'), PChar(Caption), MB_ICONWARNING or MB_OK);
|
||
edEmpNo.SetFocus;
|
||
exit;
|
||
end;
|
||
|
||
if edVpnId.Text = '' then
|
||
begin
|
||
MessageBox(Handle, PChar('"VPN <20><><EFBFBD><EFBFBD>"<22><> <20>Է<EFBFBD><D4B7><EFBFBD> <20>ֽʽÿ<CABD>.'), PChar(Caption), MB_ICONWARNING or MB_OK);
|
||
edVpnId.SetFocus;
|
||
exit;
|
||
end;
|
||
|
||
cpMain.ActiveCard := cdInstall;
|
||
SetImgCtrl(imgProgs, imgProg, 3);
|
||
|
||
imgPrev.Enabled := false;
|
||
SetImgBtn(imgBtns2, imgPrev, imgPrev.Tag + 1);
|
||
|
||
imgNext.Enabled := false;
|
||
SetImgBtn(imgBtns2, imgNext, imgNext.Tag + 1);
|
||
|
||
if ProcessInstall(Self, false) then
|
||
begin
|
||
imgNext.Enabled := true;
|
||
SetImgBtn(imgBtns2, imgNext, imgNext.Tag);
|
||
end else
|
||
MessageBox(Handle, PChar('<27><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DFBB>߽<EFBFBD><DFBD>ϴ<EFBFBD>.'), PChar(Caption), MB_ICONSTOP or MB_OK);
|
||
end;
|
||
3 :
|
||
begin
|
||
cpMain.ActiveCard := cdCompleted;
|
||
imgPrev.Visible := false;
|
||
imgNext.Tag := 4;
|
||
SetImgBtn(imgBtns2, imgNext, imgNext.Tag);
|
||
SetImgCtrl(imgProgs, imgProg, 4);
|
||
tExit.Enabled := true;
|
||
|
||
// <20><><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD> 22_0510 15:13:29 kku
|
||
// <20>Ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> <20>ݱ<EFBFBD> ī<><C4AB><EFBFBD>ɶ<EFBFBD> <20><><EFBFBD>α<CEB1><D7B7><EFBFBD> <20>˾<EFBFBD> <20>Ǿ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||
ServiceStart(NAME_SERVICE);
|
||
SetVisibleServce(NAME_SERVICE, false);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.imgPrevClick(Sender: TObject);
|
||
begin
|
||
case cpMain.ActiveCardIndex of
|
||
1 :
|
||
begin
|
||
imgPrev.Visible := false;
|
||
cpMain.ActiveCard := cdWelcome;
|
||
imgNext.Enabled := true;
|
||
SetImgBtn(imgBtns2, imgNext, imgNext.Tag);
|
||
SetImgCtrl(imgProgs, imgProg, 0);
|
||
end;
|
||
2 :
|
||
begin
|
||
cpMain.ActiveCard := cdLicense;
|
||
SetImgCtrl(imgProgs, imgProg, 1);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.imgPrevMouseEnter(Sender: TObject);
|
||
begin
|
||
if (Sender is TImage) and TImage(Sender).Enabled then
|
||
SetImgBtn(imgBtns2, TImage(Sender), TImage(Sender).Tag + 1);
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.imgPrevMouseLeave(Sender: TObject);
|
||
begin
|
||
if (Sender is TImage) and TImage(Sender).Enabled then
|
||
SetImgBtn(imgBtns2, TImage(Sender), TImage(Sender).Tag);
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.imgReinstallClick(Sender: TObject);
|
||
begin
|
||
imgNext.Visible := true;
|
||
cpMain.ActiveCard := cdWelcome;
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.process_WM_SYSCOMMAND(var msg: TWMSysCommand);
|
||
begin
|
||
if msg.CmdType = SC_CLOSE then
|
||
begin
|
||
imgExitClick(nil);
|
||
exit;
|
||
end;
|
||
Inherited;
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.rdAgreeClick(Sender: TObject);
|
||
begin
|
||
if rdAgree.Checked then
|
||
begin
|
||
SetImgBtn(imgBtns2, imgNext, imgNext.Tag);
|
||
imgNext.Enabled := true;
|
||
end;
|
||
end;
|
||
|
||
procedure TDlgeCrmHeInstMain.rdNoAgreeClick(Sender: TObject);
|
||
begin
|
||
if rdNoAgree.Checked then
|
||
begin
|
||
SetImgBtn(imgBtns2, imgNext, imgNext.Tag + 1);
|
||
imgNext.Enabled := false;
|
||
end;
|
||
end;
|
||
|
||
end.
|