ChangeUI can change any dialog. Added UseOuterUIItem

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@656 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2002-08-07 15:14:40 +00:00
parent ef05d934d9
commit 329f59cbd1
11 changed files with 247 additions and 106 deletions

View file

@ -0,0 +1,61 @@
# Header, don't edit
NLF v1
# Language ID
1034
# Start editing here
Sistema de Instalación Nullsoft %s
Instalación de %s
Desinstalación de %s
: Acuerdo de Licencia
: Opciones de Instalación
: Directorio de Instalación
: Instalando Archivos
: Completado
: Confirmación
: Desinstalando
: Completado
< Atras
Siguiente >
De acuerdo
Instalar
Desinstalar
Cancelar
Cerrar
Buscar...
Ver detalles
Nombre
Completado
Personalizada
Seleccione el tipo de instalación:
Seleccione los componentes:
O seleccione los componentes opcionales que desea instalar:
Seleccione el directorio en el que instalar %s:
Espacio disponible:
Espacio requerido:
Desinstalando desde:
Error abriendo archivo para escritura: \r\n\t"$0"\r\nPresione abortar para abortar la instalación,\r\nreintentar para reintentar escribir el archivo, o\r\nignorar para saltarse este archivo
No pudo escribirse:
Falló la copia
Copiar a
No pudo encontrarse simbolo:
No pudo cargarse:
Crear directorio:
Crear acceso directo:
Crear desinstalador:
Borrar archivo:
Borrar al reinicio:
Error creando acceso directo:
Error creando:
¡Error descomprimiendo datos! ¿Instalador corrupto?
Error registrando DLL
Ejecutar comando:
Ejecutar:
Extraer:
Extraer: error escribiendo al archivo
Instalador corrupto: código de operación no valido
No OLE para:
Directorio de salida:
Eliminar directorio:
Eliminar al reinicio:
Renombrar:
Saltado:

View file

@ -227,6 +227,12 @@ CEXEBuild::CEXEBuild()
build_header.no_custom_instmode_flag=0;
#endif
build_header.num_sections=0;
build_header.space_avail_id=0;
build_header.space_req_id=0;
build_header.dir_subtext_id=0;
build_header.com_subtext1_id=0;
build_header.com_subtext2_id=0;
build_header.common.intro_text_id=0;
build_header.common.num_entries=0;
#ifdef NSIS_CONFIG_SILENT_SUPPORT
build_header.common.silent_install=0;
@ -242,6 +248,8 @@ CEXEBuild::CEXEBuild()
uninstall_size=-1;
memset(&build_uninst,-1,sizeof(build_uninst));
build_uninst.uninst_subtext_id=0;
build_uninst.common.intro_text_id=0;
build_uninst.common.lb_bg=RGB(0,0,0);
build_uninst.common.lb_fg=RGB(0,255,0);
build_uninst.common.num_entries=0;

View file

@ -102,9 +102,32 @@ static int g_page_offs=4;
#endif
static int m_page=-1,m_abort;
static HWND m_curwnd;
HWND m_curwnd;
static int m_whichcfg;
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
BOOL my_SetDlgItemText(HWND dlg, WORD id, int strtab) {
return SetDlgItemText(dlg,id,STR(strtab));
}
BOOL SetUIText(HWND defhw, WORD def, WORD custom, int strtab) {
return my_SetDlgItemText(custom?g_hwnd:defhw,custom?custom:def,strtab);
}
// no tab
BOOL SetUITextNT(HWND defhw, WORD def, WORD custom, const char *text) {
return SetDlgItemText(custom?g_hwnd:defhw,custom?custom:def,text);
}
UINT GetUIText(WORD def, WORD custom, char *str, int max_size) {
return GetDlgItemText(custom?g_hwnd:m_curwnd,custom?custom:def,str,max_size);
}
HWND GetUIItem(HWND defhw, WORD def, WORD custom) {
return GetDlgItem(custom?g_hwnd:defhw,custom?custom:def);
}
#endif
#ifdef NSIS_CONFIG_LOG
static void build_g_logfile()
{
@ -398,14 +421,14 @@ static BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l
if (uMsg == WM_INITDIALOG)
{
g_hwnd=hwndDlg;
SetDlgItemText(hwndDlg,IDC_VERSTR,LANG_BRANDING);
my_SetDlgItemText(hwndDlg,IDC_VERSTR,LANG_BRANDING);
hIcon=LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_ICON2));
SetClassLong(hwndDlg,GCL_HICON,(long)hIcon);
SetDlgItemText(hwndDlg,IDCANCEL,LANG_BTN_CANCEL);
my_SetDlgItemText(hwndDlg,IDCANCEL,LANG_BTN_CANCEL);
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
if (!g_is_uninstaller)
#endif
SetDlgItemText(hwndDlg,IDC_BACK,LANG_BTN_BACK);
my_SetDlgItemText(hwndDlg,IDC_BACK,LANG_BTN_BACK);
ShowWindow(hwndDlg,SW_SHOW);
}
@ -472,7 +495,7 @@ static BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l
else if (!m_curwnd)
{
HWND hwndtmp;
SetDlgItemText(hwndDlg,IDOK,
my_SetDlgItemText(hwndDlg,IDOK,
(m_page == g_max_page) ? LANG_BTN_CLOSE :
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
g_is_uninstaller ? LANG_BTN_UNINST :
@ -570,8 +593,8 @@ static BOOL CALLBACK LicenseProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM
SendMessage(hwLicense,EM_AUTOURLDETECT,TRUE,0);
SendMessage(hwLicense,EM_SETBKGNDCOLOR,0,g_inst_header->license_bg);
SendMessage(hwLicense,EM_SETEVENTMASK,0,ENM_LINK);
SetWindowText(hwLicense,LANG_LICENSE_DATA);
SetDlgItemText(hwndDlg,IDC_INTROTEXT,LANG_LICENSE_TEXT);
SetWindowText(hwLicense,STR(LANG_LICENSE_DATA));
SetUIText(hwndDlg,IDC_INTROTEXT,g_inst_header->common.intro_text_id,LANG_LICENSE_TEXT);
}
else if (uMsg == WM_NOTIFY) {
ENLINK *enlink=(ENLINK *)lParam;
@ -607,8 +630,8 @@ static BOOL CALLBACK UninstProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l
{
if (uMsg == WM_INITDIALOG)
{
SetDlgItemText(hwndDlg,IDC_UNINSTFROM,LANG_UNINST_SUBTEXT);
SetDlgItemText(hwndDlg,IDC_INTROTEXT,LANG_UNINST_TEXT);
SetUIText(hwndDlg,IDC_INTROTEXT,g_inst_header->common.intro_text_id,LANG_UNINST_TEXT);
SetUIText(hwndDlg,IDC_UNINSTFROM,g_inst_uninstheader->uninst_subtext_id,LANG_UNINST_SUBTEXT);
SetDlgItemText(hwndDlg,IDC_EDIT1,state_install_directory);
}
return 0;
@ -645,9 +668,9 @@ static BOOL CALLBACK DirProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
}
#endif
SetDlgItemText(hwndDlg,IDC_DIR,state_install_directory);
SetDlgItemText(hwndDlg,IDC_INTROTEXT,LANG_DIR_TEXT);
SetDlgItemText(hwndDlg,IDC_BROWSE,LANG_BTN_BROWSE);
SetDlgItemText(hwndDlg,IDC_SELDIRTEXT,LANG_DIR_SUBTEXT);
SetUIText(hwndDlg,IDC_INTROTEXT,g_inst_header->common.intro_text_id,LANG_DIR_TEXT);
my_SetDlgItemText(hwndDlg,IDC_BROWSE,LANG_BTN_BROWSE);
SetUIText(hwndDlg,IDC_SELDIRTEXT,g_inst_header->dir_subtext_id,LANG_DIR_SUBTEXT);
SendMessage(hwndDlg,WM_IN_UPDATEMSG,0,0);
}
if (uMsg == WM_COMMAND)
@ -664,7 +687,7 @@ static BOOL CALLBACK DirProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
BROWSEINFO bi={0,};
ITEMIDLIST *idlist;
GetDlgItemText(hwndDlg,IDC_DIR,name,256);
GetDlgItemText(hwndDlg,IDC_SELDIRTEXT,str,256);
GetUIText(IDC_SELDIRTEXT,g_inst_header->dir_subtext_id,str,256);
bi.hwndOwner = hwndDlg;
bi.pszDisplayName = name;
bi.lpfn=BrowseCallbackProc;
@ -744,17 +767,17 @@ static BOOL CALLBACK DirProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
// Added by Amir Szekely 24th July 2002
// Allows 'SpaceTexts none'
if (INSTALL_STR(spacerequired) >= 0) {
lstrcpy(s,LANG_SPACE_REQ);
lstrcpy(s,STR(LANG_SPACE_REQ));
inttosizestr(total,s);
SetDlgItemText(hwndDlg,IDC_SPACEREQUIRED,s);
SetUITextNT(hwndDlg,IDC_SPACEREQUIRED,g_inst_header->space_req_id,s);
if (available != -1)
{
lstrcpy(s,LANG_SPACE_AVAIL);
lstrcpy(s,STR(LANG_SPACE_AVAIL));
inttosizestr(available,s);
SetDlgItemText(hwndDlg,IDC_SPACEAVAILABLE,s);
SetUITextNT(hwndDlg,IDC_SPACEAVAILABLE,g_inst_header->space_avail_id,s);
}
else
SetDlgItemText(hwndDlg,IDC_SPACEAVAILABLE,"");
SetUITextNT(hwndDlg,IDC_SPACEAVAILABLE,g_inst_header->space_avail_id,"");
}
EnableWindow(GetDlgItem(GetParent(hwndDlg),IDOK),
@ -798,9 +821,9 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
hTreeItems=(HTREEITEM*)GlobalAlloc(GPTR,sizeof(HTREEITEM)*g_inst_header->num_sections);
hBMcheck1=LoadBitmap(g_hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
SetDlgItemText(hwndDlg,IDC_INTROTEXT,LANG_COMP_TEXT);
SetDlgItemText(hwndDlg,IDC_TEXT1,LANG_COMP_SUBTEXT(0));
SetDlgItemText(hwndDlg,IDC_TEXT2,LANG_COMP_SUBTEXT(1));
SetUIText(hwndDlg,IDC_INTROTEXT,g_inst_header->common.intro_text_id,LANG_COMP_TEXT);
SetUIText(hwndDlg,IDC_TEXT1,g_inst_header->com_subtext1_id,LANG_COMP_SUBTEXT(0));
SetUIText(hwndDlg,IDC_TEXT2,g_inst_header->com_subtext2_id,LANG_COMP_SUBTEXT(1));
oldTreeWndProc=GetWindowLong(hwndTree1,GWL_WNDPROC);
SetWindowLong(hwndTree1,GWL_WNDPROC,(DWORD)newTreeWndProc);
@ -826,7 +849,7 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
{
SendMessage(hwndCombo1,CB_ADDSTRING,0,(LPARAM)GetStringFromStringTab(g_inst_header->install_types_ptr[m_num_insttypes]));
}
if (g_inst_header->no_custom_instmode_flag!=1) SendMessage(hwndCombo1,CB_ADDSTRING,0,(LPARAM)LANG_COMP_CUSTOM);
if (g_inst_header->no_custom_instmode_flag!=1) SendMessage(hwndCombo1,CB_ADDSTRING,0,(LPARAM)STR(LANG_COMP_CUSTOM));
SendMessage(hwndCombo1,CB_SETCURSEL,m_whichcfg,0);
}
@ -1084,7 +1107,7 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
{
int c=(m_whichcfg == m_num_insttypes && m_num_insttypes)<<3;// SW_SHOWNA=8, SW_HIDE=0
ShowWindow(hwndTree1,c);
ShowWindow(GetDlgItem(hwndDlg,IDC_TEXT2),c);
ShowWindow(GetUIItem(hwndDlg,IDC_TEXT2,g_inst_header->com_subtext2_id),c);
}
if (INSTALL_STR(spacerequired) >= 0) {
@ -1095,9 +1118,9 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
if (g_inst_section[x].default_state&DFS_SET)
total+=g_inst_section[x].size_kb;
}
lstrcpy(s,LANG_SPACE_REQ);
lstrcpy(s,STR(LANG_SPACE_REQ));
inttosizestr(total,s);
SetDlgItemText(hwndDlg,IDC_SPACEREQUIRED,s);
SetUITextNT(hwndDlg,IDC_SPACEREQUIRED,g_inst_header->space_req_id,s);
}
}
return 0;
@ -1188,7 +1211,7 @@ static BOOL CALLBACK InstProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
LVCOLUMN lvc = {0, 0, -1, 0, 0, -1};
insthwndbutton=GetDlgItem(hwndDlg,IDC_SHOWDETAILS);
insthwnd2=GetDlgItem(hwndDlg,IDC_INTROTEXT);
insthwnd2=GetUIItem(hwndDlg,IDC_INTROTEXT,g_inst_header->common.intro_text_id);
insthwnd=GetDlgItem(hwndDlg,IDC_LIST1);
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
if (g_is_uninstaller)
@ -1198,7 +1221,7 @@ static BOOL CALLBACK InstProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
else
#endif
{
log_printf3("New install of \"%s\" to \"%s\"",LANG_NAME,state_install_directory);
log_printf3("New install of \"%s\" to \"%s\"",STR(LANG_NAME),state_install_directory);
for (; x < g_inst_header->num_sections; x ++)
{
#ifdef NSIS_CONFIG_COMPONENTPAGE
@ -1214,7 +1237,7 @@ static BOOL CALLBACK InstProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
ListView_SetBkColor(insthwnd, g_inst_cmnheader->lb_bg);
ListView_SetTextBkColor(insthwnd, g_inst_cmnheader->lb_bg);
ListView_SetTextColor(insthwnd, g_inst_cmnheader->lb_fg);
SetWindowText(insthwndbutton,LANG_BTN_DETAILS);
SetWindowText(insthwndbutton,STR(LANG_BTN_DETAILS));
if (g_inst_cmnheader->show_details)
{
ShowWindow(insthwndbutton,SW_HIDE);
@ -1258,7 +1281,7 @@ static BOOL CALLBACK InstProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
ShowWindow(g_hwnd,SW_SHOWNA);
lstrcpy(g_tmp,g_caption);
process_string_fromtab(g_tmp+lstrlen(g_caption),COMMON_STR(subcaptions[g_max_page+1]));
update_status_text(LANG_COMPLETED,"");
update_status_text(STR(LANG_COMPLETED),"");
SetWindowText(h2,g_tmp);
SetFocus(h);
}

View file

@ -200,7 +200,7 @@
// "CallInstDLL dll command" had been invoked.
// - When the installer exits any extracted temporary dlls will
// be deleted.
#define NSIS_CONFIG_PLUGIN_SUPPORT
//#define NSIS_CONFIG_PLUGIN_SUPPORT
// fixes

View file

@ -37,6 +37,8 @@ static int exec_rebootflag;
HBITMAP g_hBrandingBitmap = 0;
#endif
extern HWND m_curwnd;
static WIN32_FIND_DATA *file_exists(char *buf)
{
HANDLE h;
@ -698,8 +700,8 @@ static int ExecuteEntry(entry *entries, int pos)
if (IsWindow((HWND)process_string_fromtab_toint(parms[0]))) return parms[1];
return parms[2];
case EW_SETDLGITEMTEXT:
process_string_fromtab(buf,parms[1]);
SetDlgItemText(g_hwnd,parms[0],buf);
process_string_fromtab(buf,parms[2]);
SetDlgItemText(parms[0]?g_hwnd:m_curwnd,parms[1],buf);
return 0;
#endif
#ifdef NSIS_SUPPORT_SHELLEXECUTE

View file

@ -68,7 +68,7 @@ enum
EW_FINDWINDOW, // FindWindow: 5, [outputvar,window class,window name, window_parent, window_after]
EW_SENDMESSAGE, // SendMessage: 5 [output, hwnd, msg, lparam, wparam]
EW_ISWINDOW, // IsWindow: 3 [hwnd, jump_if_window, jump_if_notwindow]
EW_SETDLGITEMTEXT, // SetDlgItemText: 2 [item_id, text]
EW_SETDLGITEMTEXT, // SetDlgItemText: 3 [outer? item_id, text]
EW_SHELLEXEC, // ShellExecute program: 4, [shell action, complete commandline, parameters, showwindow]
@ -252,6 +252,10 @@ typedef struct
// additional flags
char misc_flags; // auto_close=&1, no_show_dirpage=&2, no_show_icon&4, no_rootdir&8;
// Added by Amir Szekely 6th August 2002
// Adds the ability to make the inner text show up in a dialog item in the outer dialog.
WORD intro_text_id;
} common_header;
// Strings specific to installers
@ -322,6 +326,14 @@ typedef struct
#endif//NSIS_CONFIG_COMPONENTPAGE
#endif//NSIS_SUPPORT_CODECALLBACKS
// Added by Amir Szekely 6th August 2002
// Adds the ability to make the inner text show up in a dialog item in the outer dialog.
WORD space_avail_id;
WORD space_req_id;
WORD dir_subtext_id;
WORD com_subtext1_id;
WORD com_subtext2_id;
} header;
// Strings specific to uninstallers
@ -347,6 +359,10 @@ typedef struct
int code;
int code_size;
// Added by Amir Szekely 6th August 2002
// Adds the ability to make the inner text show up in a dialog item in the outer dialog.
WORD uninst_subtext_id;
} uninstall_header;
typedef struct

View file

@ -25,71 +25,73 @@
// Now supports more than one language in each installer
// Please note that all of these define the offset not the string itself.
// To get the string it self use process_string_fromtab or GetStringFromStringTab.
// To get the string it self use process_string_fromtab, GetStringFromStringTab or STR().
#define STR(x) GetStringFromStringTab(x)
#define INSTALL_STR(x) (cur_install_strings_table->x)
// Installer specific strings
#define LANG_BTN_BACK GetStringFromStringTab(INSTALL_STR(backbutton))
#define LANG_BTN_NEXT GetStringFromStringTab(INSTALL_STR(nextbutton))
#define LANG_BTN_BROWSE GetStringFromStringTab(INSTALL_STR(browse))
#define LANG_BTN_INSTALL GetStringFromStringTab(INSTALL_STR(installbutton))
#define LANG_SPACE_REQ GetStringFromStringTab(INSTALL_STR(spacerequired))
#define LANG_SPACE_AVAIL GetStringFromStringTab(INSTALL_STR(spaceavailable))
#define LANG_COMP_CUSTOM GetStringFromStringTab(INSTALL_STR(custom))
#define LANG_DIR_TEXT GetStringFromStringTab(INSTALL_STR(text))
#define LANG_DIR_SUBTEXT GetStringFromStringTab(INSTALL_STR(dirsubtext))
#define LANG_COMP_TEXT GetStringFromStringTab(INSTALL_STR(componenttext))
#define LANG_COMP_SUBTEXT(x) GetStringFromStringTab(INSTALL_STR(componentsubtext[x]))
#define LANG_LICENSE_TEXT GetStringFromStringTab(INSTALL_STR(licensetext))
#define LANG_LICENSE_DATA GetStringFromStringTab(INSTALL_STR(licensedata))
#define LANG_BTN_LICENSE GetStringFromStringTab(INSTALL_STR(licensebutton))
#define LANG_BTN_BACK (INSTALL_STR(backbutton))
#define LANG_BTN_NEXT (INSTALL_STR(nextbutton))
#define LANG_BTN_BROWSE (INSTALL_STR(browse))
#define LANG_BTN_INSTALL (INSTALL_STR(installbutton))
#define LANG_SPACE_REQ (INSTALL_STR(spacerequired))
#define LANG_SPACE_AVAIL (INSTALL_STR(spaceavailable))
#define LANG_COMP_CUSTOM (INSTALL_STR(custom))
#define LANG_DIR_TEXT (INSTALL_STR(text))
#define LANG_DIR_SUBTEXT (INSTALL_STR(dirsubtext))
#define LANG_COMP_TEXT (INSTALL_STR(componenttext))
#define LANG_COMP_SUBTEXT(x) (INSTALL_STR(componentsubtext[x]))
#define LANG_LICENSE_TEXT (INSTALL_STR(licensetext))
#define LANG_LICENSE_DATA (INSTALL_STR(licensedata))
#define LANG_BTN_LICENSE (INSTALL_STR(licensebutton))
#define UNINSTALL_STR(x) (cur_uninstall_strings_table->x)
// Uninstall specific strings
#define LANG_BTN_UNINST GetStringFromStringTab(UNINSTALL_STR(uninstbutton))
#define LANG_UNINST_TEXT GetStringFromStringTab(UNINSTALL_STR(uninstalltext))
#define LANG_UNINST_SUBTEXT GetStringFromStringTab(UNINSTALL_STR(uninstalltext2))
#define LANG_BTN_UNINST (UNINSTALL_STR(uninstbutton))
#define LANG_UNINST_TEXT (UNINSTALL_STR(uninstalltext))
#define LANG_UNINST_SUBTEXT (UNINSTALL_STR(uninstalltext2))
#define COMMON_STR(x) (cur_common_strings_table->x)
// Common strings
#define LANG_BRANDING GetStringFromStringTab(COMMON_STR(branding))
#define LANG_BTN_CANCEL GetStringFromStringTab(COMMON_STR(cancelbutton))
#define LANG_BTN_DETAILS GetStringFromStringTab(COMMON_STR(showdetailsbutton))
#define LANG_COMPLETED GetStringFromStringTab(COMMON_STR(completed))
#define LANG_BTN_CLOSE GetStringFromStringTab(COMMON_STR(closebutton))
#define LANG_NAME GetStringFromStringTab(COMMON_STR(name))
#define LANG_CAPTION GetStringFromStringTab(COMMON_STR(caption))
#define LANG_SUBCAPTION(x) GetStringFromStringTab(COMMON_STR(subcaptions[x]))
#define LANG_BRANDING (COMMON_STR(branding))
#define LANG_BTN_CANCEL (COMMON_STR(cancelbutton))
#define LANG_BTN_DETAILS (COMMON_STR(showdetailsbutton))
#define LANG_COMPLETED (COMMON_STR(completed))
#define LANG_BTN_CLOSE (COMMON_STR(closebutton))
#define LANG_NAME (COMMON_STR(name))
#define LANG_CAPTION (COMMON_STR(caption))
#define LANG_SUBCAPTION(x) (COMMON_STR(subcaptions[x]))
// instruction strings
#define LANG_FILEERR GetStringFromStringTab(COMMON_STR(fileerrtext))
#define LANG_DELETEFILE GetStringFromStringTab(COMMON_STR(del_file))
#define LANG_DLLREGERROR GetStringFromStringTab(COMMON_STR(err_reg_dll))
#define LANG_REMOVEDIR GetStringFromStringTab(COMMON_STR(remove_dir))
#define LANG_OUTPUTDIR GetStringFromStringTab(COMMON_STR(output_dir))
#define LANG_CREATEDIR GetStringFromStringTab(COMMON_STR(create_dir))
#define LANG_RENAME GetStringFromStringTab(COMMON_STR(rename))
#define LANG_RENAMEONREBOOT GetStringFromStringTab(COMMON_STR(rename_on_reboot))
#define LANG_SKIPPED GetStringFromStringTab(COMMON_STR(skipped))
#define LANG_CANTWRITE GetStringFromStringTab(COMMON_STR(cant_write))
#define LANG_EXTRACT GetStringFromStringTab(COMMON_STR(extract))
#define LANG_ERRORWRITING GetStringFromStringTab(COMMON_STR(err_writing))
#define LANG_ERRORDECOMPRESSING GetStringFromStringTab(COMMON_STR(err_decompressing))
#define LANG_DELETEONREBOOT GetStringFromStringTab(COMMON_STR(del_on_reboot))
#define LANG_EXECSHELL GetStringFromStringTab(COMMON_STR(exec_shell))
#define LANG_EXECUTE GetStringFromStringTab(COMMON_STR(exec))
#define LANG_CANNOTFINDSYMBOL GetStringFromStringTab(COMMON_STR(symbol_not_found))
#define LANG_COULDNOTLOAD GetStringFromStringTab(COMMON_STR(could_not_load))
#define LANG_NOOLE GetStringFromStringTab(COMMON_STR(no_ole))
#define LANG_ERRORCREATINGSHORTCUT GetStringFromStringTab(COMMON_STR(err_creating_shortcut))
#define LANG_CREATESHORTCUT GetStringFromStringTab(COMMON_STR(create_shortcut))
#define LANG_COPYTO GetStringFromStringTab(COMMON_STR(copy_to))
#define LANG_COPYFAILED GetStringFromStringTab(COMMON_STR(copy_failed))
#define LANG_ERRORCREATING GetStringFromStringTab(COMMON_STR(err_creating))
#define LANG_CREATEDUNINST GetStringFromStringTab(COMMON_STR(created_uninst))
#define LANG_INSTCORRUPTED GetStringFromStringTab(COMMON_STR(inst_corrupted))
#define LANG_FILEERR (COMMON_STR(fileerrtext))
#define LANG_DELETEFILE (COMMON_STR(del_file))
#define LANG_DLLREGERROR (COMMON_STR(err_reg_dll))
#define LANG_REMOVEDIR (COMMON_STR(remove_dir))
#define LANG_OUTPUTDIR (COMMON_STR(output_dir))
#define LANG_CREATEDIR (COMMON_STR(create_dir))
#define LANG_RENAME (COMMON_STR(rename))
#define LANG_RENAMEONREBOOT (COMMON_STR(rename_on_reboot))
#define LANG_SKIPPED (COMMON_STR(skipped))
#define LANG_CANTWRITE (COMMON_STR(cant_write))
#define LANG_EXTRACT (COMMON_STR(extract))
#define LANG_ERRORWRITING (COMMON_STR(err_writing))
#define LANG_ERRORDECOMPRESSING (COMMON_STR(err_decompressing))
#define LANG_DELETEONREBOOT (COMMON_STR(del_on_reboot))
#define LANG_EXECSHELL (COMMON_STR(exec_shell))
#define LANG_EXECUTE (COMMON_STR(exec))
#define LANG_CANNOTFINDSYMBOL (COMMON_STR(symbol_not_found))
#define LANG_COULDNOTLOAD (COMMON_STR(could_not_load))
#define LANG_NOOLE (COMMON_STR(no_ole))
#define LANG_ERRORCREATINGSHORTCUT (COMMON_STR(err_creating_shortcut))
#define LANG_CREATESHORTCUT (COMMON_STR(create_shortcut))
#define LANG_COPYTO (COMMON_STR(copy_to))
#define LANG_COPYFAILED (COMMON_STR(copy_failed))
#define LANG_ERRORCREATING (COMMON_STR(err_creating))
#define LANG_CREATEDUNINST (COMMON_STR(created_uninst))
#define LANG_INSTCORRUPTED (COMMON_STR(inst_corrupted))
#endif//_NSIS_LANG_H_

View file

@ -38,7 +38,7 @@ BEGIN
ICON IDI_ICON2,IDC_ULICON,0,0,20,20
LTEXT "",IDC_INTROTEXT,25,0,241,23
CONTROL "",IDC_EDIT1,"RICHEDIT",ES_MULTILINE | ES_READONLY |
WS_VSCROLL | WS_BORDER,0,24,266,105
WS_BORDER | WS_VSCROLL,0,24,266,105
END
#endif
@ -77,7 +77,7 @@ FONT 8, "MS Sans Serif"
BEGIN
COMBOBOX IDC_COMBO1,114,25,152,102,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
ICON IDI_ICON2,IDC_ULICON,0,0,20,20
ICON IDI_ICON2,IDC_ULICON,0,0,21,20
LTEXT "",IDC_TEXT2,0,40,108,21
CONTROL "",IDC_TEXT1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,0,27,
108,8
@ -125,8 +125,8 @@ BEGIN
CONTROL "",IDC_INTROTEXT,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,
24,0,241,8
CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SINGLESEL |
LVS_NOCOLUMNHEADER | NOT WS_VISIBLE | WS_BORDER |
WS_TABSTOP, 0,25,265,104
LVS_NOCOLUMNHEADER | NOT WS_VISIBLE | WS_BORDER |
WS_TABSTOP,0,25,265,104
ICON IDI_ICON2,IDC_ULICON,0,0,20,20
PUSHBUTTON "",IDC_SHOWDETAILS,0,28,50,14,NOT WS_TABSTOP
END

View file

@ -1058,7 +1058,6 @@ int CEXEBuild::doCommand(int which_token, LineParser &line, FILE *fp, const char
if (!dlg) return PS_ERROR;
CDialogTemplate UIDlg(dlg);
SEARCH(IDC_EDIT1);
SEARCH(IDC_INTROTEXT);
re.UpdateResource(RT_DIALOG, IDD_LICENSE, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), dlg, UIDlg.GetSize());
}
@ -1066,13 +1065,9 @@ int CEXEBuild::doCommand(int which_token, LineParser &line, FILE *fp, const char
dlg = get_dlg(hUIFile, IDD_DIR, line.gettoken_str(2));
if (!dlg) return PS_ERROR;
CDialogTemplate UIDlg(dlg);
SEARCH(IDC_SELDIRTEXT);
SEARCH(IDC_INTROTEXT);
SEARCH(IDC_DIR);
SEARCH(IDC_BROWSE);
SEARCH(IDC_CHECK1);
SEARCH(IDC_SPACEREQUIRED);
SEARCH(IDC_SPACEAVAILABLE);
re.UpdateResource(RT_DIALOG, IDD_DIR, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), dlg, UIDlg.GetSize());
}
@ -1080,10 +1075,6 @@ int CEXEBuild::doCommand(int which_token, LineParser &line, FILE *fp, const char
dlg = get_dlg(hUIFile, IDD_SELCOM, line.gettoken_str(2));
if (!dlg) return PS_ERROR;
CDialogTemplate UIDlg(dlg);
SEARCH(IDC_SPACEREQUIRED);
SEARCH(IDC_INTROTEXT);
SEARCH(IDC_TEXT1);
SEARCH(IDC_TEXT2);
SEARCH(IDC_TREE1);
SEARCH(IDC_COMBO1);
re.UpdateResource(RT_DIALOG, IDD_SELCOM, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), dlg, UIDlg.GetSize());
@ -1123,7 +1114,6 @@ int CEXEBuild::doCommand(int which_token, LineParser &line, FILE *fp, const char
if (!dlg) return PS_ERROR;
CDialogTemplate UIDlg(dlg);
SEARCH(IDC_LIST1);
SEARCH(IDC_INTROTEXT);
SEARCH(IDC_PROGRESS1);
SEARCH(IDC_PROGRESS2);
SEARCH(IDC_SHOWDETAILS);
@ -1135,8 +1125,6 @@ int CEXEBuild::doCommand(int which_token, LineParser &line, FILE *fp, const char
if (!dlg) return PS_ERROR;
CDialogTemplate UIDlg(dlg);
SEARCH(IDC_EDIT1);
SEARCH(IDC_INTROTEXT);
SEARCH(IDC_UNINSTFROM);
re.UpdateResource(RT_DIALOG, IDD_UNINST, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), dlg, UIDlg.GetSize());
}
@ -1147,14 +1135,51 @@ int CEXEBuild::doCommand(int which_token, LineParser &line, FILE *fp, const char
ERROR_MSG("can't free library!\n");
}
SCRIPT_MSG("ChangeUI: %s%s\n", line.gettoken_str(1), branding_image_found?" (branding image holder found)":"");
SCRIPT_MSG("ChangeUI: %s %s%s\n", line.gettoken_str(1), line.gettoken_str(2), branding_image_found?" (branding image holder found)":"");
}
catch (exception& err) {
ERROR_MSG("Error while changing UI: %s\n", err.what());
return PS_ERROR;
}
return make_sure_not_in_secorfunc(line.gettoken_str(0));
case TOK_USEOUTERUIITEM:
{
int k = line.gettoken_enum(1,"introtext\0spaceavail\0spacereq\0dirsubtext\0comsubtext1\0comsubtext2\0uninstsubtext\0");
if (k < 0) PRINTHELP();
int id = line.gettoken_int(2);
if (!id) {
ERROR_MSG("Error: Item id can't be zero!\n");
return PS_ERROR;
}
switch (k) {
case 0:
build_header.common.intro_text_id=build_uninst.common.intro_text_id=id;
break;
case 1:
build_header.space_avail_id=id;
break;
case 2:
build_header.space_req_id=id;
break;
case 3:
build_header.dir_subtext_id=id;
break;
case 4:
build_header.com_subtext1_id=id;
break;
case 5:
build_header.com_subtext2_id=id;
break;
case 6:
build_uninst.uninst_subtext_id=id;
break;
}
SCRIPT_MSG("%s: %s now uses outer ui item %d\n",line.gettoken_str(0),line.gettoken_str(1),id);
}
return make_sure_not_in_secorfunc(line.gettoken_str(0));
#else
case TOK_CHANGEUI:
case TOK_USEOUTERUIITEM:
ERROR_MSG("Error: %s specified, NSIS_CONFIG_VISIBLE_SUPPORT not defined.\n",line.gettoken_str(0));
return PS_ERROR;
#endif// NSIS_CONFIG_VISIBLE_SUPPORT
@ -2168,9 +2193,11 @@ int CEXEBuild::doCommand(int which_token, LineParser &line, FILE *fp, const char
return add_entry(&ent);
case TOK_SETDLGITEMTEXT:
ent.which=EW_SETDLGITEMTEXT;
ent.offsets[0]=line.gettoken_int(1);
ent.offsets[1]=add_string(line.gettoken_str(2));
SCRIPT_MSG("SetDlgItemText: item=%s text=%s\n",line.gettoken_str(1),line.gettoken_str(2));
ent.offsets[0]=line.gettoken_enum(1,"inner\0outer\0");
if (ent.offsets[0]<0) PRINTHELP();
ent.offsets[1]=line.gettoken_int(2);
ent.offsets[2]=add_string(line.gettoken_str(3));
SCRIPT_MSG("SetDlgItemText: %s dialog item=%s text=%s\n",ent.offsets[0]?"outer":"inner",line.gettoken_str(1),line.gettoken_str(2));
return add_entry(&ent);
#else//!NSIS_SUPPORT_HWNDS
case TOK_ISWINDOW:

View file

@ -133,7 +133,7 @@ static tokenType tokenlist[TOK__LAST] =
{TOK_SETFILEATTRIBUTES,"SetFileAttributes",2,0,"file attribute[|attribute[...]]\n attribute=(NORMAL|ARCHIVE|HIDDEN|OFFLINE|READONLY|SYSTEM|TEMPORARY|0)"},
{TOK_SETFONT,"SetFont",2,0,"font_face_name font_size"},
{TOK_SETERRORS,"SetErrors",0,0,""},
{TOK_SETDLGITEMTEXT,"SetDlgItemText",2,0,"item text"},
{TOK_SETDLGITEMTEXT,"SetDlgItemText",3,0,"(outer|inner) item text"},
{TOK_SETOUTPATH,"SetOutPath",1,0,"output_path"},
{TOK_SETOVERWRITE,"SetOverwrite",1,0,"(on|off|try|ifnewer)"},
{TOK_SETREBOOTFLAG,"SetRebootFlag",1,0,"true|false"},
@ -153,6 +153,7 @@ static tokenType tokenlist[TOK__LAST] =
{TOK_UNINSTCAPTION,"UninstallCaption",1,1,"[/LANG=lang_id] uninstaller_caption"},
{TOK_UNINSTSUBCAPTION,"UninstallSubCaption",2,1,"[/LANG=lang_id] page_number(0-2) new_subcaption"},
{TOK_UNREGDLL,"UnRegDLL",1,0,"dll_path_on_target.dll"},
{TOK_USEOUTERUIITEM,"UseOuterUIItem",2,0,"item id"},
{TOK_WINDOWICON,"WindowIcon",1,0,"on|off"},
{TOK_WRITEINISTR,"WriteINIStr",4,0,"ini_file section_name entry_name new_value"},
{TOK_WRITEREGBIN,"WriteRegBin",4,0,"rootkey subkey entry_name hex_string_like_12848412AB\n root_key=(HKCR|HKLM|HKCU|HKU|HKCC|HKDD|HKPD)"},

View file

@ -40,6 +40,7 @@ enum
TOK_INSTPROGRESSFLAGS,
TOK_XPSTYLE,
TOK_CHANGEUI,
TOK_USEOUTERUIITEM,
TOK_ADDBRANDINGIMAGE,
TOK_SETFONT,
TOK_SETCOMPRESSOR,