/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Функция: Onmaintuiafter
//
// Событие: событие Maintuiafter отправляется после передачи файла, когда запуска конечного пользователя запускается
// Установка, которая уже была установлена на машине. Обычно
// Это происходит через апплет «Добавить/удалить программы».
// в установке обработчика обычно отображается пользовательский интерфейс, который сообщает
// конечный пользователь, что обслуживание/удаление было успешно завершено.
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Функция onmaintuiafter ()
String Sztitle, SZMSG1, SZMSG2, Szoption1, Szoption2;
Номер bopt1, bopt2;
начинать
Отключить (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);
возврат 0;
конец;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Функция: OnMoving
//
// Событие: событие перемещения отправляется при запуске переноса файла в результате
// componenttransferdata вызов, перед любыми операциями передачи файлов
// выполняются.
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Функция onmoving ()
String Szapppath;
начинать
// Установить путь приложения приложения логотипа
// сделать: если ваше приложение .exe находится в подпапке TargetDir, добавьте подпалку
szapppath = targetdir;
Regdbsetitem (regdb_apppath, szapppath);
RegdBsetItem (regdb_apppath_default, szapppath ^ @product_key);
конец;
// --- Включите раздел файла скрипта ---
function loginsql (sztitle, szsqlsvname, szsqluser, szsqlpassword)
String szdlg, sztemp;
Номер Bdone, Nid, Nmessage, Ntemp;
Int hwnddlg;
Hwnd hwndcontrol;
начинать
szdlg = "dlg_loginsqlsv";
// Записывают данные, созданные этим диалогом
if (mode = silentmode) тогда
Sdmakename (Szappkey, Szdlg, Sztitle, Nloginsql);
SilentReadData (Szappkey, «Result», Data_Number, Sztemp, NID);
if ((nid! = назад) && (nid! = cancel))
SilentReadData (szappkey, "szsqlsvname", data_string, szsqlsvname, ntemp);
SilentReadData (szappkey, "szsqluser", data_string, szsqluser, ntemp);
SilentReadData (szappkey, "szsqlpassword", data_string, szsqlpassword, ntemp);
endif;
вернуть NID;
endif;
// Убедитесь, что общая инициализация завершена
if (! bsdinit) тогда
Sdinit ();
endif;
if (ezdefinedialog (szdlg, "", "", dlg_loginsqlsv) = dlg_err) тогда
возврат -1;
endif;
// 在用户选择标准按钮前进行循环
bdone = false;
пока (! bdone)
nid = waitondialog (szdlg); // 显示对话框
hwndcontrol = getDlgitem (hwnddlg, sd_edit_sqlsv_name);
SetFocus (hwndcontrol);
Переключатель (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);
// Эта функция устанавливает подписку для диалогов старого стиля или
// Устанавливает текст в топ -баннерной области диалогов стиля Win2K
Sdsetdlgtitle (szdlg, hwnddlg, sztitle);
case sd_edit_sqlsv_name:
nmessage = ctrlgetsubcommand (szdlg);
if (nmessage = editbox_change) тогда
CtrlgetText (szdlg, sd_edit_sqlsv_name, szsqlsvname);
endif;
case sd_edit_sqlsv_user:
nmessage = ctrlgetsubcommand (szdlg);
if (nmessage = editbox_change) тогда
CtrlgetText (szdlg, sd_edit_sqlsv_user, szsqluser);
endif;
case sd_edit_sqlsv_password:
nmessage = ctrlgetsubcommand (szdlg);
if (nmessage = editbox_change) тогда
CtrlgetText (szdlg, sd_edit_sqlsv_password, szsqlpassword);
endif;
Случай ОК:
nid = Далее;
bdone = true;
Случай обратно:
nid = назад;
bdone = true;
case dlg_err:
Sderror (-1, "Sdwelcome");
nid = -1;
bdone = true;
case dlg_close:
Sdclosedlg (hwnddlg, nid, bdone);
по умолчанию:
// Проверьте стандартную обработку
if (sdisstdbutton (nid) && sddostdbutton (nid)) тогда
bdone = true;
endif;
Endswitch;
конец;
Enddialog (szdlg);
SEDISTIALOG (SZDLG);
Sduninit ();
// Записывают данные, созданные этим диалогом
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);
вернуть NID;
конец;
функция exesqlfile (szsqlfilename)
String szcmdline;
Номер ntemp;
начинать
szcmdline = supportdir ^"osql.exe";
if (запуск AppandWait (supportDir ^"osql.exe", szsqlfilename, подождите) <0) тогда
MessageBox ("不能运行 SQL 安装文件.", Soreme);
endif;
конец;
Function modifdbdir ()
String szinstallfile;
Номер nvresult, nvlineNumber;
String Szwindir, Svreturnline;
Номер SN, NSTARTPOS;
String Sz1, Sz2, Sznewdir;
Номер ntemp;
начинать
szinstallfile = targetdir ^"install // createb.sql";
// 替换 дБ 文件的建立路径
while (nvresult! = end_of_file)
nvresult = filegrep (szinstallfile, "d: // cycdata //", svreturnline, nvlineNumber, перезапуск);
// Filedeledeline (SCODBCREGEFILE, 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, заменить);
sz1 = "";
sz2 = "";
sznewdir = "";
конец;
конец;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Функция: OnfilereAdonly
//
// Событие: событие FileReadonly отправляется во время передачи файла, когда только чтение только для чтения
// Файл должен быть перезаписан или удален.
//
// Аргументы: Файл - Полный путь файла, который помечен как только для чтения.
//
// return: err_yes - файл должен быть перезаписан или удален.
// err_no - файл не должен быть изменен.
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Функциональна нафилдеронли (файл)
начинать
вернуть sdexceptions (readonly, file);
конец;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Функция: OnfileDeadonly
//
// Событие: событие FileReadonly отправляется во время передачи файла, когда только чтение только для чтения
// Файл должен быть перезаписан или удален.
//
// Аргументы: Файл - Полный путь файла, который помечен как только для чтения.
//
// return: err_yes - файл должен быть перезаписан или удален.
// err_no - файл не должен быть изменен.
//