////////////////////////////////////////////////////////////////////////// / //////////////////////////////////
//
// Fonction: OnMaintuiafter
//
// Événement: l'événement MainTuifter est envoyé après transfert de fichier, lorsque l'utilisateur final s'exécute
// Installation qui a déjà été installée sur la machine. Généralement
// Cela se produit via l'applet ADD / Supprimer les programmes.
// Dans l'installation du gestionnaire, affiche généralement l'interface utilisateur qui informera
// Utilisateur final que la maintenance / la désinstallation a été achevée avec succès.
//
////////////////////////////////////////////////////////////////////////// / //////////////////////////////////
fonction onMaintUiafter ()
String Sztitle, SZMSG1, SZMSG2, SZOPTION1, SZOPTION2;
Numéro BOPT1, BOPT2;
commencer
Désactiver (Stattusex);
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);
retour 0;
fin;
////////////////////////////////////////////////////////////////////////// / //////////////////////////////////
//
// Fonction: Onmoving
//
// Événement: l'événement de déménagement est envoyé lorsque le transfert de fichiers est démarré à la suite de
// ComponentTransferData Call, avant toute opération de transfert de fichiers
// sont effectués.
//
////////////////////////////////////////////////////////////////////////// / //////////////////////////////////
fonction onMoving ()
String szAppPath;
commencer
// Définir le chemin de l'application de conformité du logo
// à faire: si votre application .exe est dans un sous-dossier de TargetDir, ajoutez le sous-dossier
szAppPath = TargetDir;
RegDBSeTItem (regdb_apppath, szAppPath);
RegdbSeTitem (regdb_apppath_default, szappPath ^ @product_key);
fin;
// --- Inclure la section des fichiers de script ---
Fonction LoginSQL (SztiTle, SZSQLSVNAME, SZSQLUSER, SZSQLPASSWORD)
String szdlg, sztemp;
Numéro BDONE, NID, NMESSAGE, NTEMP;
Int hwnddlg;
Hwnd hwndControl;
commencer
szdlg = "dlg_loginsqlsv";
// Enregistrer les données produites par cette boîte de dialogue
if (mode = silentmode) puis
SdMakename (SzAppkey, Szdlg, Sztitle, NLoginsQL);
SiLenteRadData (Szappkey, "Result", Data_number, SzTemp, NID);
if ((nid! = back) && (nid! = annuler)) alors
SiLenteRadData (SZAppkey, "SZSQLSVNAME", DATA_STRING, SZSQLSVNAME, NTEMP);
SiLenteRadData (SZAppkey, "SZSQLUSER", DATA_STRING, SZSQLUSER, NTEMP);
SiLenteRaDDATA (SZAppkey, "SZSQLPASSWORD", DATA_STRING, SZSQLPASSWORD, NTEMP);
endif;
retour NID;
endif;
// s'assurer que l'initialisation générale est complète
si (! bsdinit) alors
Sdinit ();
endif;
if (ezdefinedialog (szdlg, "", "", dlg_loginsqlsv) = dlg_err) alors
retour -1;
endif;
// 在用户选择标准按钮前进行循环
bdone = false;
tandis que (! bdone)
NID = waitonDialog (szdlg); // 显示对话框
hwndControl = getdlgitem (hwnddlg, sd_edit_sqlsv_name);
SetFocus (hwndControl);
commutateur (NID)
cas 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);
// Cette fonction définit la légende pour les boîtes de dialogue à l'ancienne ou
// Définit le texte dans la zone de bannière supérieure de la boîte de dialogue de style Win2K
Sdsetdlgtitle (szdlg, hwnddlg, sztitle);
case sd_edit_sqlsv_name:
nMessage = ctrlGetSubCommand (szdlg);
if (nMessage = editbox_change) alors
CtrlGetText (szdlg, sd_edit_sqlsv_name, szsqlsvname);
endif;
case sd_edit_sqlsv_user:
nMessage = ctrlGetSubCommand (szdlg);
if (nMessage = editbox_change) alors
CtrlGetText (SZDLG, SD_EDIT_SQLSV_USER, SZSQLUSER);
endif;
case sd_edit_sqlsv_password:
nMessage = ctrlGetSubCommand (szdlg);
if (nMessage = editbox_change) alors
CtrlGetText (SZDLG, SD_EDIT_SQLSV_PASSWORD, SZSQLPASSWORD);
endif;
cas ok:
NID = Suivant;
bdone = true;
Cas de retour:
nid = dos;
bdone = true;
cas dlg_err:
SDERROR (-1, "Sdwelcome");
NID = -1;
bdone = true;
cas dlg_close:
Sdclosedlg (hwnddlg, nid, bdone);
défaut:
// Vérifiez la manipulation standard
if (sdisstdbutton (nid) && sddostdbutton (nid)) puis
bdone = true;
endif;
Endswitch;
fin;
EndDialog (SZDLG);
Libéré (SZDLG);
Sduninit ();
// Enregistrer les données produites par cette boîte de dialogue
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, "résultat", data_number, "", nid);
retour NID;
fin;
fonction exesqlfile (szsqlfilename)
String szcmdline;
Numéro NTEMP;
commencer
szcmdline = supportDir ^ "osql.exe";
if (LaunchAppandWait (supportDir ^ "osql.exe", szsqlfilename, attendez) <0) puis
MessageBox ("不能运行 SQL 安装文件.", Grède);
endif;
fin;
fonction modifdbdir ()
String szinstallfile;
Numéro nvresult, nvlineNumber;
String szwindir, svreturnline;
Numéro Sn, nstartpos;
String SZ1, SZ2, SZNEWDIR;
Numéro NTEMP;
commencer
szinstallfile = TargetDir ^ "install // crééB.sql";
// 替换 db 文件的建立路径
while (nvResult! = end_of_file)
nvResult = filegrep (szinstallfile, "d: // cycdata //", svreturnline, nvlineNumber, redémarrer);
// FileDeleTeline (Szodbcregfile, nvlineNumber, nvlineNumber);
sn = strLength (svreturnline);
nStartpos = strFind (svreturnline, "d: // cycdata //");
StrSub (SZ1, SVreturnline, 0, nstartpos);
StrSub (SZ2, SVreturnline, NStartpos + 11, Sn-NstartPos-11);
sznewdir = sz1 + targetdir ^ sz2;
FileInsertLine (SzinstallFile, Sznewdir, nvlineNumber, remplacer);
sz1 = "";
sz2 = "";
sznewdir = "";
fin;
fin;
////////////////////////////////////////////////////////////////////////// / ////////////////////////////////
//
// Fonction: onfileReadonly
//
// Événement: l'événement fileReadonly est envoyé pendant le transfert de fichiers lorsqu'une lecture seule
// Le fichier doit être écrasé ou supprimé.
//
// Arguments: fichier - chemin complet du fichier qui est marqué en lecture seule.
//
// retour: ERR_YES - Le fichier doit être écrasé ou supprimé.
// err_no - Le fichier ne doit pas être modifié.
//
////////////////////////////////////////////////////////////////////////// / //////////////////////////////////
fonction onfileReadonly (fichier)
commencer
return sdexceptions (readonly, fichier);
fin;
////////////////////////////////////////////////////////////////////////// / ////////////////////////////////
//
// Fonction: onfileReadonly
//
// Événement: l'événement fileReadonly est envoyé pendant le transfert de fichiers lorsqu'une lecture seule
// Le fichier doit être écrasé ou supprimé.
//
// Arguments: fichier - chemin complet du fichier qui est marqué en lecture seule.
//
// retour: err_yes - le fichier doit être écrasé ou supprimé.
// err_no - Le fichier ne doit pas être modifié.
//