/////////////////////////////////////////////////////////Tipos ////////////////////////////////
//
// Função: onMaintuiafter
//
// Evento: o evento de manutenção é enviado após a transferência de arquivos, quando o usuário final é executado
// Instalação que já foi instalada na máquina. Geralmente
// Isso acontece através do applet Add/Remover Programas.
// Na instalação do manipulador, geralmente exibe a interface do usuário que informará
// Usuário final que a manutenção/desinstalação foi concluída com sucesso.
//
/////////////////////////////////////////////////////////Tipos ////////////////////////////////
função onmaintuiafter ()
String sztitle, szmsg1, szmsg2, szoption1, szoption2;
Número BOPT1, BOPT2;
começar
Desativar (statusex);
bopt1 = false;
bopt2 = false;
szmsg1 = sdloadString (ifx_sdfinish_maint_msg1);
szmsg2 = "";
szoption1 = "";
szoption2 = "";
sztitle = sdloadString (ifx_sdfinish_maint_title);
Sdfinishex (sztitle, szmsg1, szmsg2, szoption1, szoption2, bopt1, bopt2);
retornar 0;
fim;
/////////////////////////////////////////////////////////Tipos ////////////////////////////////
//
// Função: ONMOVING
//
// Evento: o evento em movimento é enviado quando a transferência de arquivo é iniciada como resultado de
// componentTransferdata, antes de qualquer operações de transferência de arquivos
// são realizados.
//
/////////////////////////////////////////////////////////Tipos ////////////////////////////////
função onmoving ()
String szapppath;
começar
// Defina o caminho do aplicativo de conformidade do logotipo
// Para fazer: Se o seu aplicativo .exe estiver em uma subpasta do TargetDir, adicione a subpasta
SZApppath = TargetDir;
RegdbsetItem (regdb_apppath, szapppath);
RegdbsetItem (regdb_apppath_default, szapppath ^ @product_key);
fim;
// --- Incluir seção do arquivo de script ---
Função Loginsql (Sztitle, SZSQLSvName, SzsqLuser, SZSQLPassword)
String szdlg, sztemp;
Número BDONE, NID, NMESSAGE, NTEMP;
Int hwnddlg;
HWND HWNDCONTROL;
começar
szdlg = "dlg_loginsqlsv";
// registro dados produzidos por este diálogo
if (mode = silentmode) Então
Sdmakename (szappkey, szdlg, sztitle, nloginsql);
SilentReadData (SZappKey, "Result", Data_Number, SzTemp, Nid);
if ((nid! = back) && (nid! = cancel)) então
SilentReadData (SZAPPKEY, "SZSQLSVNAME", Data_String, SZSQLSvName, NTEMP);
SilentReadData (SZAPPKEY, "SZSQLUSER", DATA_STRING, SZSQLUSER, NTEMP);
SilentReadData (SZAPPKEY, "SZSQLPassword", Data_String, SZSQLPassword, NTEMP);
endif;
retornar nid;
endif;
// Verifique se a inicialização geral está completa
if (! bsdinit) então
Sdinit ();
endif;
if (ezdefinedialog (szdlg, "", "", dlg_loginsqlsv) = dlg_err) então
retornar -1;
endif;
// 在用户选择标准按钮前进行循环
bdone = false;
enquanto (! bdone)
nid = warondialog (szdlg); // 显示对话框
hWndControl = getdlgitem (hwnddlg, sd_edit_sqlsv_name);
SetFocus (hwndcontrol);
Switch (NID)
case dlg_init:
CtrlSettext (SZDLG, SD_EDIT_SQLSV_NAME, SZSQLSVNAME);
CtrlSettext (SZDLG, SD_EDIT_SQLSV_USER, SZSQLUSER);
CtrlSettext (szdlg, sd_edit_sqlsv_password, szsqlpassword);
hwnddlg = cmdgethWnddlg (szdlg);
Sdgeneralinit (szdlg, hwnddlg, style_normal, szsdproduct);
// Esta função define a legenda para diálogos de estilo antigo ou
// define o texto na área de bandeira superior das caixas de diálogo Win2K Style
Sdsetdlgtitle (szdlg, hwnddlg, sztitle);
case sd_edit_sqlsv_name:
nmessage = ctrlgetSubCommand (szdlg);
if (nmessage = editbox_change) então
CtrlgetText (SZDLG, SD_EDIT_SQLSV_NAME, SZSQLSVNAME);
endif;
case sd_edit_sqlsv_user:
nmessage = ctrlgetSubCommand (szdlg);
if (nmessage = editbox_change) então
CtrlgetText (SZDLG, SD_EDIT_SQLSV_USER, SZSQLUSER);
endif;
case sd_edit_sqlsv_password:
nmessage = ctrlgetSubCommand (szdlg);
if (nmessage = editbox_change) então
CtrlgetText (szdlg, sd_edit_sqlsv_password, szsqlpassword);
endif;
Caso OK:
nid = a seguir;
bdone = true;
Caso de volta:
nid = volta;
bdone = true;
case dlg_err:
Sderror (-1, "sdwelcome");
nid = -1;
bdone = true;
case dlg_close:
Sdclosedlg (hwnddlg, nid, bdone);
padrão:
// Verifique o manuseio padrão
if (sdisstdbutton (nid) && sddostdbutton (nid)) então
bdone = true;
endif;
Endswitch;
final;
Enddialog (szdlg);
Lançado (szdlg);
Sduninit ();
// registro dados produzidos por este diálogo
Sdmakename (szappkey, szdlg, sztitle, nloginsql);
SilentWritedata (SZAPPKEY, "SZSQLSVNAME", DATA_STRING, SZSQLSVNAME, 0);
SilentWritedata (SZAPPKEY, "SZSQLUSER", DATA_STRING, SZSQLUSER, 0);
SilentWritedata (SZAPPKEY, "SZSQLPassword", Data_String, SZSQLPassword, 0);
SilentWritedata (SZappKey, "Result", Data_Number ",", NID);
retornar nid;
fim;
função exesqlfile (szsqlfilename)
String szcmdline;
Número NTEMP;
começar
szcmdline = supportDir ^"osql.exe";
if (launchAppandWait (supportdir ^"osql.exe", szsqlfilename, espera) <0) então
MessageBox ("不能运行 SQL 安装文件.", Severo);
endif;
fim;
função modifdbdir ()
String szinstallfile;
Número nvResult, nvlineNumber;
String szwindir, svreturnline;
Número SN, NSTARTPOS;
String sz1, sz2, sznewdir;
Número NTEMP;
começar
szInstallfile = TargetDir ^"Install // CreateDB.sql";
// 替换 dB 文件的建立路径
while (nvResult! = end_of_file)
nvResult = FileGrep (SzInstallfile, "d: // cycdata //", svreturnline, nvlineNumber, reiniciar);
// fileteleteLine (szodbcregfile, nvllineNumber, nvlineNumber);
sn = comprimento (svreturnline);
NSTARTPOS = strfind (svreturnline, "d: // cycdata //");
Strsub (SZ1, SVRETURNLINE, 0, NSTARTPOS);
Strsub (SZ2, SVRETURNLINE, NSTARTPOS+11, SN-NSTARTPOS-11);
sznewdir = sz1+alvoDir ^sz2;
FileInsertLine (szinstallfile, sznewdir, nvlineNumber, substituir);
sz1 = "";
sz2 = "";
sznewdir = "";
final;
fim;
/////////////////////////////////////////////////////////Tipos //////////////////////////////
//
// Função: OnFileReADONLY
//
// Evento: o evento FileReadonly é enviado durante a transferência de arquivos quando somente leitura
// O arquivo precisa ser substituído ou removido.
//
// Argumentos: Arquivo - Caminho completo do arquivo marcado como somente leitura.
//
// return: err_yes - o arquivo deve ser substituído ou removido.
// err_no - o arquivo não deve ser modificado.
//
/////////////////////////////////////////////////////////Tipos ////////////////////////////////
função onfileReADONLY (arquivo)
começar
return sdexceptions (readonly, arquivo);
fim;
/////////////////////////////////////////////////////////Tipos //////////////////////////////
//
// Função: OnFileReADONLY
//
// Evento: o evento FileReadonly é enviado durante a transferência de arquivos quando somente leitura
// O arquivo precisa ser substituído ou removido.
//
// Argumentos: Arquivo - Caminho completo do arquivo marcado como somente leitura.
//
// return: err_yes - o arquivo deve ser substituído ou removido.
// err_no - o arquivo não deve ser modificado.
//