* PageEx - every page can be used everywhere and as many times as needed
* DirVar - easy way to add another dir page * default strings in the language file (Page directory is enough, no need for DirText) * strings from the language file are now LangStrings that can be used in the script * no more /LANG - one string for all languages * any lang strings can be used everywhere, installer or uninstaller (no un.) * no more unprocessed strings - variables can be used almost everywhere (except in licenseData and InstallDirRegKey) * DirText parm for browse dialog text * SetBkColor -> SetCtlColors - can now set text color too * fixed SetOutPath and File /r bug * fixed File /a /oname bug * added $_CLICK for pages * added quotes support in lang files (patch #752620) * extraction progress * separate RTL dialogs for RTL langs (improved RTL too) * InstallOptions RTL * StartMenu RTL * fixed RegDLL? * added IfSilent and SetSilent (SetSilent only works from .onInit) * fixed verify window (it never showed) (bug #792494) * fixed ifnewer readonly file problem (patch #783782) * fixed wininit.ini manipulation when there is another section after [rename] * fixed some ClearType issues * fixed a minor bug in the resource editor * fixed !ifdef/!endif stuff, rewritten * lots of code and comments clean ups * got rid of some useless exceptions handling and STL classes (still much more to go) * lots of optimizations, of course ;) * updated system.dll with support for GUID, WCHAR, and fast VTable calling (i.e. COM ready) * minor bug fixes git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2823 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
bb8879b7ae
commit
74ea2dc585
91 changed files with 5180 additions and 4101 deletions
|
@ -29,6 +29,17 @@ static int popstring(char *str)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define CC_TEXT 1
|
||||||
|
#define CC_BK 4
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
COLORREF text;
|
||||||
|
LOGBRUSH bk;
|
||||||
|
HBRUSH bkb;
|
||||||
|
int bkmode;
|
||||||
|
int flags;
|
||||||
|
} ctlcolors;
|
||||||
|
|
||||||
#define strcpy(x,y) lstrcpy(x,y)
|
#define strcpy(x,y) lstrcpy(x,y)
|
||||||
#define strncpy(x,y,z) lstrcpyn(x,y,z)
|
#define strncpy(x,y,z) lstrcpyn(x,y,z)
|
||||||
#define strdup(x) STRDUP(x)
|
#define strdup(x) STRDUP(x)
|
||||||
|
@ -164,6 +175,8 @@ int bBackEnabled = FALSE;
|
||||||
int bCancelEnabled = FALSE; // by ORTIM: 13-August-2002
|
int bCancelEnabled = FALSE; // by ORTIM: 13-August-2002
|
||||||
int bCancelShow = FALSE; // by ORTIM: 13-August-2002
|
int bCancelShow = FALSE; // by ORTIM: 13-August-2002
|
||||||
|
|
||||||
|
int bRTL = FALSE;
|
||||||
|
|
||||||
FieldType *pFields = NULL;
|
FieldType *pFields = NULL;
|
||||||
#define DEFAULT_RECT 1018
|
#define DEFAULT_RECT 1018
|
||||||
int nRectId = 0;
|
int nRectId = 0;
|
||||||
|
@ -468,6 +481,8 @@ int ReadSettings(void) {
|
||||||
bCancelEnabled = GetPrivateProfileInt("Settings", "CancelEnabled", 0xFFFF0000, pszFilename);
|
bCancelEnabled = GetPrivateProfileInt("Settings", "CancelEnabled", 0xFFFF0000, pszFilename);
|
||||||
bCancelShow = GetPrivateProfileInt("Settings", "CancelShow", 0xFFFF0000, pszFilename);
|
bCancelShow = GetPrivateProfileInt("Settings", "CancelShow", 0xFFFF0000, pszFilename);
|
||||||
|
|
||||||
|
bRTL = GetPrivateProfileInt("Settings", "RTL", 0, pszFilename);
|
||||||
|
|
||||||
if (nNumFields > 0) {
|
if (nNumFields > 0) {
|
||||||
// make this twice as large for the worst case that every control is a browse button.
|
// make this twice as large for the worst case that every control is a browse button.
|
||||||
// the structure is small enough that this won't waste much memory.
|
// the structure is small enough that this won't waste much memory.
|
||||||
|
@ -621,21 +636,21 @@ int ReadSettings(void) {
|
||||||
pFields[nIdx].hImage = (HANDLE)GetPrivateProfileInt(szField, "TxtColor", RGB(0,0,255), pszFilename);
|
pFields[nIdx].hImage = (HANDLE)GetPrivateProfileInt(szField, "TxtColor", RGB(0,0,255), pszFilename);
|
||||||
|
|
||||||
pFields[nIdx].nControlID = 1200 + nIdx;
|
pFields[nIdx].nControlID = 1200 + nIdx;
|
||||||
if ( pFields[nIdx].nType == FIELD_FILEREQUEST || pFields[nIdx].nType == FIELD_DIRREQUEST )
|
if (pFields[nIdx].nType == FIELD_FILEREQUEST || pFields[nIdx].nType == FIELD_DIRREQUEST)
|
||||||
{
|
{
|
||||||
FieldType *pNewField = &pFields[nIdx+1];
|
FieldType *pNewField = &pFields[nIdx+1];
|
||||||
pNewField->nControlID = 1200 + nIdx + 1;
|
pNewField->nControlID = 1200 + nIdx + 1;
|
||||||
pNewField->nParentIdx = nIdx;
|
pNewField->nParentIdx = nIdx;
|
||||||
pNewField->nType = FIELD_BROWSEBUTTON;
|
pNewField->nType = FIELD_BROWSEBUTTON;
|
||||||
pNewField->nFlags = pFields[nIdx].nFlags & (FLAG_DISABLED | FLAG_NOTABSTOP);
|
pNewField->nFlags = pFields[nIdx].nFlags & (FLAG_DISABLED | FLAG_NOTABSTOP);
|
||||||
pNewField->pszText = STRDUP(szBrowseButtonCaption); // needed for generic FREE
|
pNewField->pszText = STRDUP(szBrowseButtonCaption); // needed for generic FREE
|
||||||
pNewField->rect.right = pFields[nIdx].rect.right;
|
pNewField->rect.right = pFields[nIdx].rect.right;
|
||||||
pNewField->rect.left = pNewField->rect.right - BROWSE_WIDTH;
|
pNewField->rect.left = pNewField->rect.right - BROWSE_WIDTH;
|
||||||
pNewField->rect.bottom = pFields[nIdx].rect.bottom;
|
pNewField->rect.bottom = pFields[nIdx].rect.bottom;
|
||||||
pNewField->rect.top = pFields[nIdx].rect.top;
|
pNewField->rect.top = pFields[nIdx].rect.top;
|
||||||
pFields[nIdx].rect.right = pNewField->rect.left - 3;
|
pFields[nIdx].rect.right = pNewField->rect.left - 3;
|
||||||
nNumFields++;
|
nNumFields++;
|
||||||
nIdx++;
|
nIdx++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -753,11 +768,16 @@ BOOL CALLBACK cfgDlgProc(HWND hwndDlg,
|
||||||
case WM_CTLCOLORBTN:
|
case WM_CTLCOLORBTN:
|
||||||
case WM_CTLCOLORLISTBOX:
|
case WM_CTLCOLORLISTBOX:
|
||||||
{
|
{
|
||||||
BOOL brush = (BOOL)GetWindowLong((HWND)lParam, GWL_USERDATA);
|
ctlcolors *c = (ctlcolors *)GetWindowLong((HWND)lParam, GWL_USERDATA);
|
||||||
if (brush)
|
|
||||||
{
|
if (c) {
|
||||||
SetBkMode((HDC)wParam, TRANSPARENT);
|
SetBkMode((HDC)wParam, c->bkmode);
|
||||||
return brush;
|
if (c->flags & CC_BK)
|
||||||
|
SetBkColor((HDC)wParam, c->bk.lbColor);
|
||||||
|
if (c->flags & CC_TEXT)
|
||||||
|
SetTextColor((HDC)wParam, c->text);
|
||||||
|
|
||||||
|
return (BOOL)c->bkb;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -861,13 +881,23 @@ int createCfgDlg()
|
||||||
HFONT hFont = (HFONT)SendMessage(hMainWindow, WM_GETFONT, 0, 0);
|
HFONT hFont = (HFONT)SendMessage(hMainWindow, WM_GETFONT, 0, 0);
|
||||||
|
|
||||||
RECT dialog_r;
|
RECT dialog_r;
|
||||||
|
int width;
|
||||||
hConfigWindow=CreateDialog(m_hInstance,MAKEINTRESOURCE(IDD_DIALOG1),hMainWindow,cfgDlgProc);
|
hConfigWindow=CreateDialog(m_hInstance,MAKEINTRESOURCE(IDD_DIALOG1),hMainWindow,cfgDlgProc);
|
||||||
if (hConfigWindow)
|
if (hConfigWindow)
|
||||||
{
|
{
|
||||||
GetWindowRect(childwnd,&dialog_r);
|
GetWindowRect(childwnd,&dialog_r);
|
||||||
ScreenToClient(hMainWindow,(LPPOINT)&dialog_r);
|
ScreenToClient(hMainWindow,(LPPOINT)&dialog_r);
|
||||||
ScreenToClient(hMainWindow,((LPPOINT)&dialog_r)+1);
|
ScreenToClient(hMainWindow,((LPPOINT)&dialog_r)+1);
|
||||||
SetWindowPos(hConfigWindow,0,dialog_r.left,dialog_r.top,dialog_r.right-dialog_r.left,dialog_r.bottom-dialog_r.top,SWP_NOZORDER|SWP_NOACTIVATE);
|
width = dialog_r.right-dialog_r.left;
|
||||||
|
SetWindowPos(
|
||||||
|
hConfigWindow,
|
||||||
|
0,
|
||||||
|
dialog_r.left,
|
||||||
|
dialog_r.top,
|
||||||
|
width,
|
||||||
|
dialog_r.bottom-dialog_r.top,
|
||||||
|
SWP_NOZORDER|SWP_NOACTIVATE
|
||||||
|
);
|
||||||
// Sets the font of IO window to be the same as the main window
|
// Sets the font of IO window to be the same as the main window
|
||||||
SendMessage(hConfigWindow, WM_SETFONT, (WPARAM)hFont, TRUE);
|
SendMessage(hConfigWindow, WM_SETFONT, (WPARAM)hFont, TRUE);
|
||||||
}
|
}
|
||||||
|
@ -899,47 +929,75 @@ int createCfgDlg()
|
||||||
static struct {
|
static struct {
|
||||||
char* pszClass;
|
char* pszClass;
|
||||||
DWORD dwStyle;
|
DWORD dwStyle;
|
||||||
|
DWORD dwRTLStyle;
|
||||||
DWORD dwExStyle;
|
DWORD dwExStyle;
|
||||||
|
DWORD dwRTLExStyle;
|
||||||
} ClassTable[] = {
|
} ClassTable[] = {
|
||||||
{ "STATIC", // FIELD_LABEL
|
{ "STATIC", // FIELD_LABEL
|
||||||
DEFAULT_STYLES /*| WS_TABSTOP*/,
|
DEFAULT_STYLES /*| WS_TABSTOP*/,
|
||||||
|
DEFAULT_STYLES | SS_RIGHT /*| WS_TABSTOP*/,
|
||||||
|
WS_EX_TRANSPARENT,
|
||||||
WS_EX_TRANSPARENT },
|
WS_EX_TRANSPARENT },
|
||||||
{ "STATIC", // FIELD_ICON
|
{ "STATIC", // FIELD_ICON
|
||||||
DEFAULT_STYLES /*| WS_TABSTOP*/ | SS_ICON,
|
DEFAULT_STYLES /*| WS_TABSTOP*/ | SS_ICON,
|
||||||
|
DEFAULT_STYLES /*| WS_TABSTOP*/ | SS_ICON,
|
||||||
|
0,
|
||||||
0 },
|
0 },
|
||||||
{ "STATIC", // FIELD_BITMAP
|
{ "STATIC", // FIELD_BITMAP
|
||||||
DEFAULT_STYLES /*| WS_TABSTOP*/ | SS_BITMAP | SS_CENTERIMAGE,
|
DEFAULT_STYLES /*| WS_TABSTOP*/ | SS_BITMAP | SS_CENTERIMAGE,
|
||||||
|
DEFAULT_STYLES /*| WS_TABSTOP*/ | SS_BITMAP | SS_CENTERIMAGE,
|
||||||
|
0,
|
||||||
0 },
|
0 },
|
||||||
{ "BUTTON", // FIELD_BROWSEBUTTON
|
{ "BUTTON", // FIELD_BROWSEBUTTON
|
||||||
DEFAULT_STYLES | WS_TABSTOP,
|
DEFAULT_STYLES | WS_TABSTOP,
|
||||||
|
DEFAULT_STYLES | WS_TABSTOP,
|
||||||
|
0,
|
||||||
0 },
|
0 },
|
||||||
{ "BUTTON", // FIELD_CHECKBOX
|
{ "BUTTON", // FIELD_CHECKBOX
|
||||||
DEFAULT_STYLES | WS_TABSTOP | BS_TEXT | BS_VCENTER | BS_AUTOCHECKBOX | BS_MULTILINE,
|
DEFAULT_STYLES | WS_TABSTOP | BS_TEXT | BS_VCENTER | BS_AUTOCHECKBOX | BS_MULTILINE,
|
||||||
|
DEFAULT_STYLES | WS_TABSTOP | BS_TEXT | BS_VCENTER | BS_AUTOCHECKBOX | BS_MULTILINE | BS_RIGHT | BS_LEFTTEXT,
|
||||||
|
0,
|
||||||
0 },
|
0 },
|
||||||
{ "BUTTON", // FIELD_RADIOBUTTON
|
{ "BUTTON", // FIELD_RADIOBUTTON
|
||||||
DEFAULT_STYLES | WS_TABSTOP | BS_TEXT | BS_VCENTER | BS_AUTORADIOBUTTON | BS_MULTILINE,
|
DEFAULT_STYLES | WS_TABSTOP | BS_TEXT | BS_VCENTER | BS_AUTORADIOBUTTON | BS_MULTILINE,
|
||||||
|
DEFAULT_STYLES | WS_TABSTOP | BS_TEXT | BS_VCENTER | BS_AUTORADIOBUTTON | BS_MULTILINE | BS_RIGHT | BS_LEFTTEXT,
|
||||||
|
0,
|
||||||
0 },
|
0 },
|
||||||
{ "EDIT", // FIELD_TEXT
|
{ "EDIT", // FIELD_TEXT
|
||||||
DEFAULT_STYLES | WS_TABSTOP | ES_AUTOHSCROLL,
|
DEFAULT_STYLES | WS_TABSTOP | ES_AUTOHSCROLL,
|
||||||
|
DEFAULT_STYLES | WS_TABSTOP | ES_AUTOHSCROLL | ES_RIGHT,
|
||||||
|
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE,
|
||||||
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE },
|
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE },
|
||||||
{ "EDIT", // FIELD_FILEREQUEST
|
{ "EDIT", // FIELD_FILEREQUEST
|
||||||
DEFAULT_STYLES | WS_TABSTOP | ES_AUTOHSCROLL,
|
DEFAULT_STYLES | WS_TABSTOP | ES_AUTOHSCROLL,
|
||||||
|
DEFAULT_STYLES | WS_TABSTOP | ES_AUTOHSCROLL | ES_RIGHT,
|
||||||
|
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE,
|
||||||
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE },
|
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE },
|
||||||
{ "EDIT", // FIELD_DIRREQUEST
|
{ "EDIT", // FIELD_DIRREQUEST
|
||||||
DEFAULT_STYLES | WS_TABSTOP | ES_AUTOHSCROLL,
|
DEFAULT_STYLES | WS_TABSTOP | ES_AUTOHSCROLL,
|
||||||
|
DEFAULT_STYLES | WS_TABSTOP | ES_AUTOHSCROLL | ES_RIGHT,
|
||||||
|
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE,
|
||||||
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE },
|
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE },
|
||||||
{ "COMBOBOX", // FIELD_COMBOBOX
|
{ "COMBOBOX", // FIELD_COMBOBOX
|
||||||
DEFAULT_STYLES | WS_TABSTOP | WS_VSCROLL | WS_CLIPCHILDREN | CBS_AUTOHSCROLL | CBS_HASSTRINGS,
|
DEFAULT_STYLES | WS_TABSTOP | WS_VSCROLL | WS_CLIPCHILDREN | CBS_AUTOHSCROLL | CBS_HASSTRINGS,
|
||||||
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE },
|
DEFAULT_STYLES | WS_TABSTOP | WS_VSCROLL | WS_CLIPCHILDREN | CBS_AUTOHSCROLL | CBS_HASSTRINGS,
|
||||||
|
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE,
|
||||||
|
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE | WS_EX_RIGHT | WS_EX_RTLREADING },
|
||||||
{ "LISTBOX", // FIELD_LISTBOX
|
{ "LISTBOX", // FIELD_LISTBOX
|
||||||
DEFAULT_STYLES | WS_TABSTOP | WS_VSCROLL | LBS_DISABLENOSCROLL | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT,
|
DEFAULT_STYLES | WS_TABSTOP | WS_VSCROLL | LBS_DISABLENOSCROLL | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT,
|
||||||
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE },
|
DEFAULT_STYLES | WS_TABSTOP | WS_VSCROLL | LBS_DISABLENOSCROLL | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT,
|
||||||
|
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE,
|
||||||
|
WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE | WS_EX_RIGHT | WS_EX_RTLREADING },
|
||||||
{ "BUTTON", // FIELD_GROUPBOX
|
{ "BUTTON", // FIELD_GROUPBOX
|
||||||
DEFAULT_STYLES | BS_GROUPBOX,
|
DEFAULT_STYLES | BS_GROUPBOX,
|
||||||
|
DEFAULT_STYLES | BS_GROUPBOX | BS_RIGHT,
|
||||||
|
WS_EX_TRANSPARENT,
|
||||||
WS_EX_TRANSPARENT },
|
WS_EX_TRANSPARENT },
|
||||||
{ "BUTTON", // FIELD_LINK
|
{ "BUTTON", // FIELD_LINK
|
||||||
DEFAULT_STYLES | WS_TABSTOP | BS_OWNERDRAW
|
DEFAULT_STYLES | WS_TABSTOP | BS_OWNERDRAW,
|
||||||
},
|
DEFAULT_STYLES | WS_TABSTOP | BS_OWNERDRAW | BS_RIGHT,
|
||||||
|
0,
|
||||||
|
0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
int nType = pFields[nIdx].nType;
|
int nType = pFields[nIdx].nType;
|
||||||
|
@ -949,8 +1007,15 @@ int createCfgDlg()
|
||||||
if (nType < 1 || nType > (sizeof(ClassTable) / sizeof(ClassTable[0])))
|
if (nType < 1 || nType > (sizeof(ClassTable) / sizeof(ClassTable[0])))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
DWORD dwStyle = ClassTable[pFields[nIdx].nType - 1].dwStyle;
|
DWORD dwStyle, dwExStyle;
|
||||||
DWORD dwExStyle = ClassTable[pFields[nIdx].nType - 1].dwExStyle;
|
if (bRTL) {
|
||||||
|
dwStyle = ClassTable[pFields[nIdx].nType - 1].dwRTLStyle;
|
||||||
|
dwExStyle = ClassTable[pFields[nIdx].nType - 1].dwRTLExStyle;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
dwStyle = ClassTable[pFields[nIdx].nType - 1].dwStyle;
|
||||||
|
dwExStyle = ClassTable[pFields[nIdx].nType - 1].dwExStyle;
|
||||||
|
}
|
||||||
|
|
||||||
// Convert from dialog units
|
// Convert from dialog units
|
||||||
|
|
||||||
|
@ -970,6 +1035,12 @@ int createCfgDlg()
|
||||||
if (pFields[nIdx].rect.bottom < 0)
|
if (pFields[nIdx].rect.bottom < 0)
|
||||||
rect.bottom += dialog_r.bottom - dialog_r.top;
|
rect.bottom += dialog_r.bottom - dialog_r.top;
|
||||||
|
|
||||||
|
if (bRTL) {
|
||||||
|
int right = rect.right;
|
||||||
|
rect.right = width - rect.left;
|
||||||
|
rect.left = width - right;
|
||||||
|
}
|
||||||
|
|
||||||
char *title = pFields[nIdx].pszText;
|
char *title = pFields[nIdx].pszText;
|
||||||
switch (nType) {
|
switch (nType) {
|
||||||
case FIELD_CHECKBOX:
|
case FIELD_CHECKBOX:
|
||||||
|
|
|
@ -195,11 +195,16 @@ It can contain the following values:</p>
|
||||||
<td class="lefttable"><span class="italic">(optional)</span></td>
|
<td class="lefttable"><span class="italic">(optional)</span></td>
|
||||||
<td class="righttable">Overrides the text for the back button. If not specified, the back button text
|
<td class="righttable">Overrides the text for the back button. If not specified, the back button text
|
||||||
will not be changed.</td></tr>
|
will not be changed.</td></tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="lefttable"><span class="bold">Rect</span></td>
|
<td class="lefttable"><span class="bold">Rect</span></td>
|
||||||
<td class="lefttable"><span class="italic">(optional)</span></td>
|
<td class="lefttable"><span class="italic">(optional)</span></td>
|
||||||
<td class="righttable">Overrides the default rect ID to run over. This will make IO resize itself
|
<td class="righttable">Overrides the default rect ID to run over. This will make IO resize itself
|
||||||
according to a different rect than NSIS's dialogs rect.</td></tr>
|
according to a different rect than NSIS's dialogs rect.</td></tr>
|
||||||
|
<tr>
|
||||||
|
<td class="lefttable"><span class="bold">RTL</span></td>
|
||||||
|
<td class="lefttable"><span class="italic">(optional)</span></td>
|
||||||
|
<td class="righttable">If 1 is specified the dialog will be mirrored and all texts will be aligned to the
|
||||||
|
right. Use NSIS's $(^RTL) to fill this field, it's the easiest way.</td></tr>
|
||||||
</table>
|
</table>
|
||||||
<p class="text">Each field section has the heading "Field #" where # must be sequential
|
<p class="text">Each field section has the heading "Field #" where # must be sequential
|
||||||
numbers from 1 to NumFields. Each Field section can contain the following values:</p>
|
numbers from 1 to NumFields. Each Field section can contain the following values:</p>
|
||||||
|
@ -612,12 +617,13 @@ FunctionEnd
|
||||||
</pre>
|
</pre>
|
||||||
<p class="header">Version history</p>
|
<p class="header">Version history</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>DLL version 2.2 (6/10/2003)
|
<li>DLL version 2.2 (4/9/2003)
|
||||||
<ul>
|
<ul>
|
||||||
<li>Added new control "link"</li>
|
<li>Added new control "link"</li>
|
||||||
<li>\r\n converts to newline in Multiline edit box</li>
|
<li>\r\n converts to newline in Multiline edit box</li>
|
||||||
<li>Support for multiline edit box</li>
|
<li>Support for multiline edit box</li>
|
||||||
<li>Better tab order in DirRequest and FileRequest</li>
|
<li>Better tab order in DirRequest and FileRequest</li>
|
||||||
|
<li>Added RTL support</li>
|
||||||
<li>Minor fixes</li>
|
<li>Minor fixes</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v2
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
RTL
|
||||||
# Translation by asdfuae@msn.com
|
# Translation by asdfuae@msn.com
|
||||||
نظام التنصيب نلسوفت %s
|
نظام التنصيب نلسوفت %s
|
||||||
تنصيب %s
|
ÊäÕíÈ $(^Name)
|
||||||
مزيل %s
|
ãÒíá $(^Name)
|
||||||
: اتفاقية الترخيص
|
: اتفاقية الترخيص
|
||||||
: خيارات التنصيب
|
: خيارات التنصيب
|
||||||
: مجلد التنصيب
|
: مجلد التنصيب
|
||||||
|
@ -34,7 +36,7 @@ NLF v2
|
||||||
أختر نوع التنصيب:
|
أختر نوع التنصيب:
|
||||||
أختر العناصر للتنصيب:
|
أختر العناصر للتنصيب:
|
||||||
أو، أختر العناصر المحددة المراد تنصيبها:
|
أو، أختر العناصر المحددة المراد تنصيبها:
|
||||||
أختر المجلد المراد تنصيب %s فيه:
|
ÃÎÊÑ ÇáãÌáÏ ÇáãÑÇÏ ÊäÕíÈ $(^Name) Ýíå:
|
||||||
المساحة المتاحة:
|
المساحة المتاحة:
|
||||||
المساحة المطلوبة:
|
المساحة المطلوبة:
|
||||||
يزال من:
|
يزال من:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v2
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Asparouh Kalyandjiev <acnapyx@computers.bg>
|
# Translation by Asparouh Kalyandjiev <acnapyx@computers.bg>
|
||||||
Nullsoft инсталатор %s
|
Nullsoft инсталатор %s
|
||||||
%s Инсталиране
|
$(^Name) Èíñòàëèðàíå
|
||||||
%s Деинсталиране
|
$(^Name) Äåèíñòàëèðàíå
|
||||||
: Лицензно споразумение
|
: Лицензно споразумение
|
||||||
: Инсталационни опции
|
: Инсталационни опции
|
||||||
: Инсталационна папка
|
: Инсталационна папка
|
||||||
|
@ -34,7 +36,7 @@ Nullsoft
|
||||||
Изберете типа инсталация:
|
Изберете типа инсталация:
|
||||||
Изберете компонентите за инсталиране:
|
Изберете компонентите за инсталиране:
|
||||||
Или изберете компонентите, които желаете да бъдат инсталирани:
|
Или изберете компонентите, които желаете да бъдат инсталирани:
|
||||||
Изберете папка, където да се инсталира %s:
|
Èçáåðåòå ïàïêà, êúäåòî äà ñå èíñòàëèðà $(^Name):
|
||||||
Свободно място:
|
Свободно място:
|
||||||
Нужно място:
|
Нужно място:
|
||||||
Деинсталиране от:
|
Деинсталиране от:
|
||||||
|
|
|
@ -8,10 +8,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by falanko
|
# Translation by falanko
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
Instal·lació de %s
|
Instal·lació de $(^Name)
|
||||||
Desinstal·lació de %s
|
Desinstal·lació de $(^Name)
|
||||||
: Acord de Llicència
|
: Acord de Llicència
|
||||||
: Opcions d'Instal·lació
|
: Opcions d'Instal·lació
|
||||||
: Carpeta d'Instal·lació
|
: Carpeta d'Instal·lació
|
||||||
|
@ -37,7 +39,7 @@ Personalitzada
|
||||||
Indiqui el tipus d'instal·lació:
|
Indiqui el tipus d'instal·lació:
|
||||||
Seleccioni els components:
|
Seleccioni els components:
|
||||||
O seleccioni els components opcionals a instal·lar:
|
O seleccioni els components opcionals a instal·lar:
|
||||||
Seleccioni la carpeta on instal·lar %s:
|
Seleccioni la carpeta on instal·lar $(^Name):
|
||||||
Espai lliure:
|
Espai lliure:
|
||||||
Espai necessari:
|
Espai necessari:
|
||||||
Desinstal·lant de:
|
Desinstal·lant de:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Igor Ostriz
|
# Translation by Igor Ostriz
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s Instalacija
|
$(^Name) Instalacija
|
||||||
%s Deinstalacija
|
$(^Name) Deinstalacija
|
||||||
: Licenenèni uvjeti
|
: Licenenèni uvjeti
|
||||||
: Instalacijske opcije
|
: Instalacijske opcije
|
||||||
: Instalacijska mapa
|
: Instalacijska mapa
|
||||||
|
@ -36,7 +38,7 @@ Posebna
|
||||||
Izaberite tip instalacije:
|
Izaberite tip instalacije:
|
||||||
Odaberite komponente za instalaciju:
|
Odaberite komponente za instalaciju:
|
||||||
Ili po izboru oznaèite komponente koje želite instalirati:
|
Ili po izboru oznaèite komponente koje želite instalirati:
|
||||||
Odaberite mapu u koju želite instalirati program %s:
|
Odaberite mapu u koju želite instalirati program $(^Name):
|
||||||
Slobodno prostora na disku:
|
Slobodno prostora na disku:
|
||||||
Potrebno prostora na disku:
|
Potrebno prostora na disku:
|
||||||
Uklanjam iz:
|
Uklanjam iz:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by T.V. Zuggy (http://zuggy.wz.cz/)
|
# Translation by T.V. Zuggy (http://zuggy.wz.cz/)
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
Instalace programu %s
|
Instalace programu $(^Name)
|
||||||
Odinstalování programu %s
|
Odinstalování programu $(^Name)
|
||||||
: Licenční ujednání
|
: Licenční ujednání
|
||||||
: Možnosti instalace
|
: Možnosti instalace
|
||||||
: Umístění instalace
|
: Umístění instalace
|
||||||
|
@ -36,7 +38,7 @@ Vlastn
|
||||||
Zvolte typ instalace:
|
Zvolte typ instalace:
|
||||||
Zvolte součásti pro instalaci:
|
Zvolte součásti pro instalaci:
|
||||||
Nebo zvolte jednotlivé součásti, které si přejete nainstalovat:
|
Nebo zvolte jednotlivé součásti, které si přejete nainstalovat:
|
||||||
Zvolte adresář pro instalaci programu %s:
|
Zvolte adresář pro instalaci programu $(^Name):
|
||||||
Dostupné volné místo:
|
Dostupné volné místo:
|
||||||
Potřebné volné místo:
|
Potřebné volné místo:
|
||||||
Odinstalování z:
|
Odinstalování z:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v2
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Casper Bergenstoff
|
# Translation by Casper Bergenstoff
|
||||||
Nullsoft Installerings System %s
|
Nullsoft Installerings System %s
|
||||||
%s Setup
|
$(^Name) Setup
|
||||||
%s Afinstaller
|
$(^Name) Afinstaller
|
||||||
: Licens Aftale
|
: Licens Aftale
|
||||||
: Installations egenskaber
|
: Installations egenskaber
|
||||||
: Installation mappe
|
: Installation mappe
|
||||||
|
@ -34,7 +36,7 @@ Tilpasset
|
||||||
Vælg hvilken type du vil installere:
|
Vælg hvilken type du vil installere:
|
||||||
Vælg komponenter du vil installere:
|
Vælg komponenter du vil installere:
|
||||||
Eller, Vælg de udvalgte komponenter som du vil installere:
|
Eller, Vælg de udvalgte komponenter som du vil installere:
|
||||||
Vælg mappe du vil installere %s i:
|
Vælg mappe du vil installere $(^Name) i:
|
||||||
Plads til rådighed:
|
Plads til rådighed:
|
||||||
Krævet plads:
|
Krævet plads:
|
||||||
Afinstallerer fra:
|
Afinstallerer fra:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Hendri Adriaens & Joost Verburg
|
# Translation by Hendri Adriaens & Joost Verburg
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s Installatie
|
$(^Name) Installatie
|
||||||
%s Deïnstallatie
|
$(^Name) Deïnstallatie
|
||||||
: Licentie Overeenkomst
|
: Licentie Overeenkomst
|
||||||
: Installatie Opties
|
: Installatie Opties
|
||||||
: Installatie Map
|
: Installatie Map
|
||||||
|
@ -36,7 +38,7 @@ Handmatig
|
||||||
Selecteer het installatietype:
|
Selecteer het installatietype:
|
||||||
Selecteer de installatieonderdelen:
|
Selecteer de installatieonderdelen:
|
||||||
Of selecteer de onderdelen die geïnstalleerd moeten worden:
|
Of selecteer de onderdelen die geïnstalleerd moeten worden:
|
||||||
Selecteer de map om %s in te installeren:
|
Selecteer de map om $(^Name) in te installeren:
|
||||||
Beschikbare ruimte:
|
Beschikbare ruimte:
|
||||||
Vereiste ruimte:
|
Vereiste ruimte:
|
||||||
Uninstallatie vanuit:
|
Uninstallatie vanuit:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Header, don't edit
|
# Header, don't edit
|
||||||
NLF v5
|
NLF v6
|
||||||
# Start editing here
|
# Start editing here
|
||||||
# Language ID
|
# Language ID
|
||||||
1033
|
1033
|
||||||
|
@ -7,76 +7,185 @@ NLF v5
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
-
|
-
|
||||||
# Translation by ..... (any credits should go here)
|
# Translation by ..... (any credits should go here)
|
||||||
|
# ^Branding
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s Setup
|
# ^SetupCaption
|
||||||
%s Uninstall
|
$(^Name) Setup
|
||||||
|
# ^UninstallCaption
|
||||||
|
$(^Name) Uninstall
|
||||||
|
# ^LicenseSubCaption
|
||||||
: License Agreement
|
: License Agreement
|
||||||
|
# ^ComponentsSubCaption
|
||||||
: Installation Options
|
: Installation Options
|
||||||
|
# ^DirSubCaption
|
||||||
: Installation Folder
|
: Installation Folder
|
||||||
|
# ^InstallingSubCaption
|
||||||
: Installing
|
: Installing
|
||||||
|
# ^CompletedSubCaption
|
||||||
: Completed
|
: Completed
|
||||||
|
# ^UnComponentsSubCaption
|
||||||
|
: Uninstallation Options
|
||||||
|
# ^UnDirSubCaption
|
||||||
|
: Uninstallation Folder
|
||||||
|
# ^ConfirmSubCaption
|
||||||
: Confirmation
|
: Confirmation
|
||||||
|
# ^UninstallingSubCaption
|
||||||
: Uninstalling
|
: Uninstalling
|
||||||
|
# ^UnCompletedSubCaption
|
||||||
: Completed
|
: Completed
|
||||||
|
# ^BackBtn
|
||||||
< &Back
|
< &Back
|
||||||
|
# ^NextBtn
|
||||||
&Next >
|
&Next >
|
||||||
|
# ^AgreeBtn
|
||||||
I &Agree
|
I &Agree
|
||||||
|
# ^AcceptBtn
|
||||||
I &accept the terms in the License Agreement
|
I &accept the terms in the License Agreement
|
||||||
|
# ^DontAcceptBtn
|
||||||
I &do not accept the terms in the License Agreement
|
I &do not accept the terms in the License Agreement
|
||||||
|
# ^InstallBtn
|
||||||
&Install
|
&Install
|
||||||
|
# ^UninstallBtn
|
||||||
&Uninstall
|
&Uninstall
|
||||||
|
# ^CancelBtn
|
||||||
Cancel
|
Cancel
|
||||||
|
# ^CloseBtn
|
||||||
&Close
|
&Close
|
||||||
|
# ^BrowseBtn
|
||||||
B&rowse...
|
B&rowse...
|
||||||
|
# ^ShowDetailsBtn
|
||||||
Show &details
|
Show &details
|
||||||
|
# ^ClickNext
|
||||||
|
Click Next to continue.
|
||||||
|
# ^ClickInstall
|
||||||
|
Click Install to start the installation.
|
||||||
|
# ^ClickUninstall
|
||||||
|
Click Uninstall to start the uninstallation.
|
||||||
|
# ^Name
|
||||||
Name
|
Name
|
||||||
|
# ^Completed
|
||||||
Completed
|
Completed
|
||||||
|
# ^LicenseText
|
||||||
|
Please review the license agreement before installing $(^Name). If you accept all terms of the agreement, click I Agree.
|
||||||
|
# ^LicenseTextCB
|
||||||
|
Please review the license agreement before installing $(^Name). If you accept all terms of the agreement, click the check box below. $_CLICK
|
||||||
|
# ^LicesnseTextRB
|
||||||
|
Please review the license agreement before installing $(^Name). If you accept all terms of the agreement, select the first option below. $_CLICK
|
||||||
|
# ^UnLicenseText
|
||||||
|
Please review the license agreement before uninstalling $(^Name). If you accept all terms of the agreement, click I Agree.
|
||||||
|
# ^UnLicenseTextCB
|
||||||
|
Please review the license agreement before uninstalling $(^Name). If you accept all terms of the agreement, click the check box below. $_CLICK
|
||||||
|
# ^UnLicesnseTextRB
|
||||||
|
Please review the license agreement before uninstalling $(^Name). If you accept all terms of the agreement, select the first option below. $_CLICK
|
||||||
|
# ^Custom
|
||||||
Custom
|
Custom
|
||||||
|
# ^ComponentsText
|
||||||
|
Check the components you want to install and uncheck the components you don't want to install. $_CLICK
|
||||||
|
# ^ComponentsSubText1
|
||||||
Select the type of install:
|
Select the type of install:
|
||||||
|
# ^ComponentsSubText2_NoInstTypes
|
||||||
Select components to install:
|
Select components to install:
|
||||||
|
# ^ComponentsSubText2
|
||||||
Or, select the optional components you wish to install:
|
Or, select the optional components you wish to install:
|
||||||
Select the folder to install %s in:
|
# ^UnComponentsText
|
||||||
Space available:
|
Check the components you want to uninstall and uncheck the components you don't want to uninstall. $_CLICK
|
||||||
Space required:
|
# ^UnComponentsSubText1
|
||||||
|
Select the type of uninstall:
|
||||||
|
# ^UnComponentsSubText2_NoInstTypes
|
||||||
|
Select components to uninstall:
|
||||||
|
# ^UnComponentsSubText2
|
||||||
|
Or, select the optional components you wish to uninstall:
|
||||||
|
# ^DirText
|
||||||
|
Setup will install $(^Name) in the following folder. To install in a different folder, click Browse and select another folder. $_CLICK
|
||||||
|
# ^DirSubText
|
||||||
|
Destination Folder
|
||||||
|
# ^DirBrowseText
|
||||||
|
Select the folder to install $(^Name) in:
|
||||||
|
# ^UnDirText
|
||||||
|
Setup will uninstall $(^Name) from the following folder. To uninstall from a different folder, click Browse and select another folder. $_CLICK
|
||||||
|
# ^UnDirSubText
|
||||||
|
""
|
||||||
|
# ^UnDirBrowseText
|
||||||
|
Select the folder to uninstall $(^Name) from:
|
||||||
|
# ^SpaceAvailable
|
||||||
|
"Space available: "
|
||||||
|
# ^SpaceRequired
|
||||||
|
"Space required: "
|
||||||
|
# ^UninstallingText
|
||||||
|
This wizard will uninstall $(^Name) from your computer. $_CLICK
|
||||||
|
# ^UninstallingSubText
|
||||||
Uninstalling from:
|
Uninstalling from:
|
||||||
Error opening file for writing: \r\n\t"$0"\r\nHit abort to abort installation,\r\nretry to retry writing the file, or\r\nignore to skip this file
|
# ^FileError
|
||||||
Error opening file for writing: \r\n\t"$0"\r\nHit retry to retry writing the file, or\r\ncancel to abort installation
|
Error opening file for writing: \r\n\t\"$0\"\r\nHit abort to abort installation,\r\nretry to retry writing the file, or\r\nignore to skip this file
|
||||||
Can't write:
|
# ^FileError_NoIgnore
|
||||||
|
Error opening file for writing: \r\n\t\"$0\"\r\nHit retry to retry writing the file, or\r\ncancel to abort installation
|
||||||
|
# ^CantWrite
|
||||||
|
"Can't write: "
|
||||||
|
# ^CopyFailed
|
||||||
Copy failed
|
Copy failed
|
||||||
Copy to
|
# ^CopyTo
|
||||||
Registering:
|
"Copy to "
|
||||||
Unregistering:
|
# ^Registering
|
||||||
Could not find symbol:
|
"Registering: "
|
||||||
Could not load:
|
# ^Unregistering
|
||||||
Create folder:
|
"Unregistering: "
|
||||||
Create shortcut:
|
# ^SymbolNotFound
|
||||||
Created uninstaller:
|
"Could not find symbol: "
|
||||||
Delete file:
|
# ^CouldNotLoad
|
||||||
Delete on reboot:
|
"Could not load: "
|
||||||
Error creating shortcut:
|
# ^CreateFolder
|
||||||
Error creating:
|
"Create folder: "
|
||||||
|
# ^CreateShortcut
|
||||||
|
"Create shortcut: "
|
||||||
|
# ^CreatedUninstaller
|
||||||
|
"Created uninstaller: "
|
||||||
|
# ^Delete
|
||||||
|
"Delete file: "
|
||||||
|
# ^DeleteOnReboot
|
||||||
|
"Delete on reboot: "
|
||||||
|
# ^ErrorCreatingShortcut
|
||||||
|
"Error creating shortcut: "
|
||||||
|
# ^ErrorCreating
|
||||||
|
"Error creating: "
|
||||||
|
# ^ErrorDecompressing
|
||||||
Error decompressing data! Corrupted installer?
|
Error decompressing data! Corrupted installer?
|
||||||
|
# ^ErrorRegistering
|
||||||
Error registering DLL
|
Error registering DLL
|
||||||
ExecShell:
|
# ^ExecShell
|
||||||
Execute:
|
"ExecShell: "
|
||||||
Extract:
|
# ^Exec
|
||||||
Extract: error writing to file
|
"Execute: "
|
||||||
|
# ^Extract
|
||||||
|
"Extract: "
|
||||||
|
# ^ErrorWriting
|
||||||
|
"Extract: error writing to file "
|
||||||
|
# ^InvalidOpcode
|
||||||
Installer corrupted: invalid opcode
|
Installer corrupted: invalid opcode
|
||||||
No OLE for:
|
# ^NoOLE
|
||||||
Output folder:
|
"No OLE for: "
|
||||||
Remove folder:
|
# ^OutputFolder
|
||||||
Rename on reboot:
|
"Output folder: "
|
||||||
Rename:
|
# ^RemoveFolder
|
||||||
Skipped:
|
"Remove folder: "
|
||||||
|
# ^RenameOnReboot
|
||||||
|
"Rename on reboot: "
|
||||||
|
# ^Rename
|
||||||
|
"Rename: "
|
||||||
|
# ^Skipped
|
||||||
|
"Skipped: "
|
||||||
|
# ^CopyDetails
|
||||||
Copy Details To Clipboard
|
Copy Details To Clipboard
|
||||||
|
# ^LogInstall
|
||||||
Log install process
|
Log install process
|
||||||
# byte
|
# ^Byte
|
||||||
B
|
B
|
||||||
# kilo
|
# ^Kilo
|
||||||
K
|
K
|
||||||
# mega
|
# ^Mega
|
||||||
M
|
M
|
||||||
# giga
|
# ^Giga
|
||||||
G
|
G
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by izzo (izzo@hot.ee)
|
# Translation by izzo (izzo@hot.ee)
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s Paigaldamine
|
$(^Name) Paigaldamine
|
||||||
%s Eemaldamine
|
$(^Name) Eemaldamine
|
||||||
: Litsentsileping
|
: Litsentsileping
|
||||||
: Paigaldusvalikud
|
: Paigaldusvalikud
|
||||||
: Paigalduskaust
|
: Paigalduskaust
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by AKX <akx@theakx.tk> - Modifications by Eclipser <Eclipser@pilvikaupunki.net>
|
# Translation by AKX <akx@theakx.tk> - Modifications by Eclipser <Eclipser@pilvikaupunki.net>
|
||||||
Nullsoft Asennusjärjestelmä %s
|
Nullsoft Asennusjärjestelmä %s
|
||||||
%s Asennus
|
$(^Name) Asennus
|
||||||
%s Poisto
|
$(^Name) Poisto
|
||||||
: Lisenssisopimus
|
: Lisenssisopimus
|
||||||
: Asennusvaihtoehdot
|
: Asennusvaihtoehdot
|
||||||
: Asennushakemisto
|
: Asennushakemisto
|
||||||
|
@ -36,7 +38,7 @@ Oma
|
||||||
Valitse asennustyyppi:
|
Valitse asennustyyppi:
|
||||||
Valitse asennettavat komponentit:
|
Valitse asennettavat komponentit:
|
||||||
Tai, valitse valinnaiset komponentit:
|
Tai, valitse valinnaiset komponentit:
|
||||||
Valitse hakemisto, johon %s asennetaan:
|
Valitse hakemisto, johon $(^Name) asennetaan:
|
||||||
Tilaa vapaana:
|
Tilaa vapaana:
|
||||||
Tarvittava tila:
|
Tarvittava tila:
|
||||||
Poistetaan hakemistosta:
|
Poistetaan hakemistosta:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by the French NSIS team <veekee@winampfr.com> - http://www.winampfr.com/nsis.
|
# Translation by the French NSIS team <veekee@winampfr.com> - http://www.winampfr.com/nsis.
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
Installation de %s
|
Installation de $(^Name)
|
||||||
Désinstallation de %s
|
Désinstallation de $(^Name)
|
||||||
: Licence
|
: Licence
|
||||||
: Options d'installation
|
: Options d'installation
|
||||||
: Dossier d'installation
|
: Dossier d'installation
|
||||||
|
@ -36,7 +38,7 @@ Personnalis
|
||||||
Sélectionnez le type d'installation :
|
Sélectionnez le type d'installation :
|
||||||
Sélectionnez les composants à installer :
|
Sélectionnez les composants à installer :
|
||||||
Ou, sélectionnez les composants optionnels que vous voulez installer :
|
Ou, sélectionnez les composants optionnels que vous voulez installer :
|
||||||
Sélectionnez le dossier d'installation de %s :
|
Sélectionnez le dossier d'installation de $(^Name) :
|
||||||
Espace disponible :
|
Espace disponible :
|
||||||
Espace requis :
|
Espace requis :
|
||||||
Désinstallation de :
|
Désinstallation de :
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by L.King, changes by R. Bisswanger
|
# Translation by L.King, changes by R. Bisswanger
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s Installation
|
$(^Name) Installation
|
||||||
%s Deinstallation
|
$(^Name) Deinstallation
|
||||||
: Lizenzabkommen
|
: Lizenzabkommen
|
||||||
: Installations-Optionen
|
: Installations-Optionen
|
||||||
: Zielverzeichnis
|
: Zielverzeichnis
|
||||||
|
@ -36,7 +38,7 @@ Benutzerdefiniert
|
||||||
Installations-Typ bestimmen:
|
Installations-Typ bestimmen:
|
||||||
Wählen Sie die Komponenten aus, die Sie installieren möchten:
|
Wählen Sie die Komponenten aus, die Sie installieren möchten:
|
||||||
oder wählen Sie zusätzliche Komponenten aus:
|
oder wählen Sie zusätzliche Komponenten aus:
|
||||||
Wählen Sie das Verzeichnis aus, in das Sie %s installieren möchten:
|
Wählen Sie das Verzeichnis aus, in das Sie $(^Name) installieren möchten:
|
||||||
Verfügbarer Speicher:
|
Verfügbarer Speicher:
|
||||||
Benötigter Speicher:
|
Benötigter Speicher:
|
||||||
Deinstalliere aus:
|
Deinstalliere aus:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Makidis N. Mike
|
# Translation by Makidis N. Mike
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
Εγκατάσταση του '%s'
|
Εγκατάσταση του '$(^Name)'
|
||||||
Απεγκατάσταση του '%s'
|
Απεγκατάσταση του '$(^Name)'
|
||||||
: Συμφωνία ’δειας Χρήσης
|
: Συμφωνία ’δειας Χρήσης
|
||||||
: Επιλογές Εγκατάστασης
|
: Επιλογές Εγκατάστασης
|
||||||
: Φάκελος Εγκατάστασης
|
: Φάκελος Εγκατάστασης
|
||||||
|
@ -36,7 +38,7 @@ Nullsoft Install System %s
|
||||||
Επιλέξτε τύπο εγκατάστασης:
|
Επιλέξτε τύπο εγκατάστασης:
|
||||||
Επιλέξτε τα στοιχεία που θέλετε να εγκαταστήσετε:
|
Επιλέξτε τα στοιχεία που θέλετε να εγκαταστήσετε:
|
||||||
Ή, επιλέξτε τα προαιρετικά στοιχεία που θέλετε να εγκαταστήσετε:
|
Ή, επιλέξτε τα προαιρετικά στοιχεία που θέλετε να εγκαταστήσετε:
|
||||||
Επιλέξτε το φάκελο εγκατάστασης για το '%s':
|
Επιλέξτε το φάκελο εγκατάστασης για το '$(^Name)':
|
||||||
Διαθέσιμος χώρος:
|
Διαθέσιμος χώρος:
|
||||||
Απαιτούμενος χώρος:
|
Απαιτούμενος χώρος:
|
||||||
Απεγκατάστ. από:
|
Απεγκατάστ. από:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
RTL
|
||||||
# Translation by Amir Szekely (aka KiCHiK)
|
# Translation by Amir Szekely (aka KiCHiK)
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
התקנת %s
|
התקנת $(^Name)
|
||||||
הסרת %s
|
הסרת $(^Name)
|
||||||
: הסכם רישוי
|
: הסכם רישוי
|
||||||
: אפשרויות התקנה
|
: אפשרויות התקנה
|
||||||
: תיקיית התקנה
|
: תיקיית התקנה
|
||||||
|
@ -19,8 +21,8 @@ Nullsoft Install System %s
|
||||||
: אישור הסרה
|
: אישור הסרה
|
||||||
: מסיר
|
: מסיר
|
||||||
: ההסרה הושלמה
|
: ההסרה הושלמה
|
||||||
< ה&קודם
|
ה&קודם >
|
||||||
ה&בא >
|
< ה&בא
|
||||||
אני &מסכים
|
אני &מסכים
|
||||||
אני &מסכים לתנאי הסכם הרישוי
|
אני &מסכים לתנאי הסכם הרישוי
|
||||||
אני &לא מסכים לתנאי הסכם הרישוי
|
אני &לא מסכים לתנאי הסכם הרישוי
|
||||||
|
@ -28,20 +30,20 @@ Nullsoft Install System %s
|
||||||
&הסר
|
&הסר
|
||||||
ביטול
|
ביטול
|
||||||
סגור&
|
סגור&
|
||||||
&עיין...
|
...&עיין
|
||||||
ה&צג פרטים
|
ה&צג פרטים
|
||||||
שם
|
שם
|
||||||
הפעולה הושלמה
|
הפעולה הושלמה
|
||||||
מותאם אישית
|
מותאם אישית
|
||||||
בחר סוג התקנה:
|
:בחר סוג התקנה
|
||||||
בחר רכיבים להתקנה:
|
:בחר רכיבים להתקנה
|
||||||
או, בחר רכיבי רשות להתקנה:
|
:או, בחר רכיבי רשות להתקנה
|
||||||
בחר תיקייה להתקנת %s:
|
:בחר תיקייה להתקנת $(^Name)
|
||||||
מקום פנוי:
|
מקום פנוי:
|
||||||
מקום דרוש:
|
מקום דרוש:
|
||||||
מסיר מ:
|
:מסיר מ
|
||||||
ארעה שגיאה בעת פתיחת קובץ לכתיבה:\r\n\t"$0"\r\nלחץ על ביטול כדי לבטל את ההתקנה,\r\nנסה שנית כדי לנסות לפתוח את הקובץ שוב, או\r\nהתעלם כדי לדלג על הקובץ
|
ארעה שגיאה בעת פתיחת קובץ לכתיבה:\r\n\t"$0"\r\nלחץ על ביטול כדי לבטל את ההתקנה,\r\nנסה שנית כדי לנסות לפתוח את הקובץ שוב, או\r\nהתעלם כדי לדלג על הקובץ
|
||||||
ארעה שגיאה בעת פתיחת קובץ לכתיבה:\r\n\t"$0"\r\nלחץ על נסה שנית כדי לנסות לפתוח את הקובץ שוב, או\r\nביטול עדי לבטל את התתקנה
|
ארעה שגיאה בעת פתיחת קובץ לכתיבה:\r\n\t"$0"\r\nלחץ על נסה שנית כדי לנסות לפתוח את הקובץ שוב, או\r\nביטול כדי לבטל את התתקנה
|
||||||
לא ניתן לכתוב:
|
לא ניתן לכתוב:
|
||||||
ההעתקה נכשלה
|
ההעתקה נכשלה
|
||||||
העתק ל-
|
העתק ל-
|
||||||
|
@ -74,8 +76,8 @@ Nullsoft Install System %s
|
||||||
# byte
|
# byte
|
||||||
"ב
|
"ב
|
||||||
# kilo
|
# kilo
|
||||||
ק
|
ק
|
||||||
# mega
|
# mega
|
||||||
מ
|
מ
|
||||||
# giga
|
# giga
|
||||||
ג
|
ג
|
|
@ -7,11 +7,13 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Soft-Trans Bt. (V2)
|
# Translation by Soft-Trans Bt. (V2)
|
||||||
# Translation by Orfanik Kft. (V3-V5)
|
# Translation by Orfanik Kft. (V3-V5)
|
||||||
Nullsoft Telepítőrendszer %s
|
Nullsoft Telepítőrendszer %s
|
||||||
%s Telepítő
|
$(^Name) Telepítő
|
||||||
%s Eltávolító
|
$(^Name) Eltávolító
|
||||||
: Licencszerződés
|
: Licencszerződés
|
||||||
: Telepítési lehetőségek
|
: Telepítési lehetőségek
|
||||||
: Célmappa
|
: Célmappa
|
||||||
|
@ -37,7 +39,7 @@ Egy
|
||||||
Válassza ki a telepítés típusát:
|
Válassza ki a telepítés típusát:
|
||||||
Válassza ki a telepítendő összetevőket:
|
Válassza ki a telepítendő összetevőket:
|
||||||
vagy, jelölje ki a választható összetevők közül a telepíteni kívánta(ka)t:
|
vagy, jelölje ki a választható összetevők közül a telepíteni kívánta(ka)t:
|
||||||
Melyik mappába telepíti a(z) %s fájlt:
|
Melyik mappába telepíti a(z) $(^Name) fájlt:
|
||||||
Szabad terület:
|
Szabad terület:
|
||||||
Helyigény:
|
Helyigény:
|
||||||
Eltávolítás helye:
|
Eltávolítás helye:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v2
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Orfanik - http://www.orfanik.hu
|
# Translation by Orfanik - http://www.orfanik.hu
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
Installazione di %s
|
Installazione di $(^Name)
|
||||||
Disinstallazione di %s
|
Disinstallazione di $(^Name)
|
||||||
: Licenza d'uso
|
: Licenza d'uso
|
||||||
: Opzioni di installazione
|
: Opzioni di installazione
|
||||||
: Cartella di installazione
|
: Cartella di installazione
|
||||||
|
@ -34,7 +36,7 @@ Personalizzata
|
||||||
Seleziona il tipo d'installazione :
|
Seleziona il tipo d'installazione :
|
||||||
Seleziona i componenti da installare :
|
Seleziona i componenti da installare :
|
||||||
Oppure, seleziona i componenti opzionali che vuoi installare :
|
Oppure, seleziona i componenti opzionali che vuoi installare :
|
||||||
Seleziona la cartella dove installare %s :
|
Seleziona la cartella dove installare $(^Name) :
|
||||||
Spazio disponibile :
|
Spazio disponibile :
|
||||||
Spazio necessario :
|
Spazio necessario :
|
||||||
Rimozione da :
|
Rimozione da :
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
9
|
9
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
932
|
932
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Dnanako, updated by Takahiro Yoshimura <takahiro_y@monolithworks.co.jp>
|
# Translation by Dnanako, updated by Takahiro Yoshimura <takahiro_y@monolithworks.co.jp>
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s セットアップ
|
$(^Name) セットアップ
|
||||||
%s アンインストール
|
$(^Name) アンインストール
|
||||||
:ライセンス契約書
|
:ライセンス契約書
|
||||||
:インストール オプション
|
:インストール オプション
|
||||||
:インストール フォルダ
|
:インストール フォルダ
|
||||||
|
@ -36,7 +38,7 @@ Nullsoft Install System %s
|
||||||
インストール タイプを選択:
|
インストール タイプを選択:
|
||||||
インストール コンポーネントを選択:
|
インストール コンポーネントを選択:
|
||||||
または、インストール オプション コンポーネントを選択:
|
または、インストール オプション コンポーネントを選択:
|
||||||
%s をインストールするフォルダを選択してください:
|
$(^Name) をインストールするフォルダを選択してください:
|
||||||
利用可能なディスクスペース:
|
利用可能なディスクスペース:
|
||||||
必要なディスクスペース:
|
必要なディスクスペース:
|
||||||
アンインストール元:
|
アンインストール元:
|
||||||
|
|
|
@ -8,10 +8,12 @@ NLF v5
|
||||||
9
|
9
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
949
|
949
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by dTomoyo <dtomoyo@empal.com> - http://user.chol.com/~ckgfx / Modified by koder@popdesk.co.kr
|
# Translation by dTomoyo <dtomoyo@empal.com> - http://user.chol.com/~ckgfx / Modified by koder@popdesk.co.kr
|
||||||
널소프트 설치 시스템 %s
|
널소프트 설치 시스템 %s
|
||||||
%s 설치
|
$(^Name) 설치
|
||||||
%s 제거
|
$(^Name) 제거
|
||||||
: 사용 계약 동의
|
: 사용 계약 동의
|
||||||
: 설치 옵션
|
: 설치 옵션
|
||||||
: 폴더 지정
|
: 폴더 지정
|
||||||
|
@ -37,7 +39,7 @@ NLF v5
|
||||||
설치 형태를 선택하세요:
|
설치 형태를 선택하세요:
|
||||||
설치하려는 구성 요소를 선택하세요:
|
설치하려는 구성 요소를 선택하세요:
|
||||||
구성요소 직접 선택:
|
구성요소 직접 선택:
|
||||||
%s (을)를 다음 폴더에 설치합니다:
|
$(^Name) (을)를 다음 폴더에 설치합니다:
|
||||||
남은 디스크 공간:
|
남은 디스크 공간:
|
||||||
필요한 디스크 공간:
|
필요한 디스크 공간:
|
||||||
제거 대상:
|
제거 대상:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v3
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by NorCis
|
# Translation by NorCis
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s Idiegimas
|
$(^Name) Idiegimas
|
||||||
%s Panaikinti
|
$(^Name) Panaikinti
|
||||||
: Naudojimo sutartis
|
: Naudojimo sutartis
|
||||||
: Idiegimo nustatymai
|
: Idiegimo nustatymai
|
||||||
: Idiegimo katalogas
|
: Idiegimo katalogas
|
||||||
|
@ -36,7 +38,7 @@ Kitoks
|
||||||
Pasirinkite idiegimo tipa:
|
Pasirinkite idiegimo tipa:
|
||||||
Pasirinkite komponentus, kuriuos idiegti:
|
Pasirinkite komponentus, kuriuos idiegti:
|
||||||
Arba, pasirinkite neprivalomus komponentus, kuriuos jus norite idiegti:
|
Arba, pasirinkite neprivalomus komponentus, kuriuos jus norite idiegti:
|
||||||
Pasirinkite kataloga, kur idiegti %s:
|
Pasirinkite kataloga, kur idiegti $(^Name):
|
||||||
Yra vietos:
|
Yra vietos:
|
||||||
Reikia vietos:
|
Reikia vietos:
|
||||||
Trinama iš:
|
Trinama iš:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Sasko Zdravkin [vardarce@mail.com]
|
# Translation by Sasko Zdravkin [vardarce@mail.com]
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s Инсталирање
|
$(^Name) Инсталирање
|
||||||
%s Деинсталирање
|
$(^Name) Деинсталирање
|
||||||
: Лиценцен Договор
|
: Лиценцен Договор
|
||||||
: Инсталациони опции
|
: Инсталациони опции
|
||||||
: Инсталационен директориум
|
: Инсталационен директориум
|
||||||
|
@ -36,7 +38,7 @@ Nullsoft Install System %s
|
||||||
Одберето го видот на инсталацијата:
|
Одберето го видот на инсталацијата:
|
||||||
Одберете компоненти за инсталирање:
|
Одберете компоненти за инсталирање:
|
||||||
Или, одберете одредени компоненти за инсталирање:
|
Или, одберете одредени компоненти за инсталирање:
|
||||||
Одберете го директориумот за инсталирање на %s:
|
Одберете го директориумот за инсталирање на $(^Name):
|
||||||
Слободен простор:
|
Слободен простор:
|
||||||
Потребен простор:
|
Потребен простор:
|
||||||
Деинсталирај од:
|
Деинсталирај од:
|
||||||
|
|
|
@ -7,11 +7,13 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
1250
|
1250
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Piotr Murawski & Rafał Lampe <ppiter@skrzynka.pl> - www.lomsel.prv.pl
|
# Translation by Piotr Murawski & Rafał Lampe <ppiter@skrzynka.pl> - www.lomsel.prv.pl
|
||||||
# corrections, additions, updates by cube cube(at)lp.net.pl
|
# corrections, additions, updates by cube cube(at)lp.net.pl
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s Instalator
|
$(^Name) Instalator
|
||||||
%s Odinstaluj
|
$(^Name) Odinstaluj
|
||||||
: Warunki licencji
|
: Warunki licencji
|
||||||
: Opcje instalacji
|
: Opcje instalacji
|
||||||
: Folder instalacji
|
: Folder instalacji
|
||||||
|
@ -37,7 +39,7 @@ U
|
||||||
Wybierz typ instalacji:
|
Wybierz typ instalacji:
|
||||||
Wybierz komponenty do zainstalowania:
|
Wybierz komponenty do zainstalowania:
|
||||||
lub wybierz opcjonalne komponenty, które chcesz zainstalować:
|
lub wybierz opcjonalne komponenty, które chcesz zainstalować:
|
||||||
Wybierz folder instalacji %s:
|
Wybierz folder instalacji $(^Name):
|
||||||
Dostępne miejsce:
|
Dostępne miejsce:
|
||||||
Wymagane miejsce:
|
Wymagane miejsce:
|
||||||
Odinstalowuje z:
|
Odinstalowuje z:
|
||||||
|
|
|
@ -8,10 +8,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
1252
|
1252
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation v4.0.3 by DragonSoull <dragonsoull@madalien.tk> with help from Dre` - Updated by Ramon
|
# Translation v4.0.3 by DragonSoull <dragonsoull@madalien.tk> with help from Dre` - Updated by Ramon
|
||||||
Sistema de Instalação Nullsoft %s
|
Sistema de Instalação Nullsoft %s
|
||||||
Instalação de %s
|
Instalação de $(^Name)
|
||||||
Desinstalação de %s
|
Desinstalação de $(^Name)
|
||||||
: Contrato de Licença
|
: Contrato de Licença
|
||||||
: Opções de instalação
|
: Opções de instalação
|
||||||
: Directoria de instalação
|
: Directoria de instalação
|
||||||
|
@ -37,7 +39,7 @@ Personalizada
|
||||||
Escolha o tipo de instalação:
|
Escolha o tipo de instalação:
|
||||||
Escolha os componentes a instalar:
|
Escolha os componentes a instalar:
|
||||||
Ou, escolha os componentes opcionais que deseja instalar:
|
Ou, escolha os componentes opcionais que deseja instalar:
|
||||||
Escolha a directoria a instalar %s:
|
Escolha a directoria a instalar $(^Name):
|
||||||
Espaço disponível:
|
Espaço disponível:
|
||||||
Espaço necessário:
|
Espaço necessário:
|
||||||
A Desinstalar de:
|
A Desinstalar de:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Diego Marcos <jump@osite.com.br>
|
# Translation by Diego Marcos <jump@osite.com.br>
|
||||||
Sistema de Instalação Nullsoft %s
|
Sistema de Instalação Nullsoft %s
|
||||||
Instalação do %s
|
Instalação do $(^Name)
|
||||||
Desinstalação do %s
|
Desinstalação do $(^Name)
|
||||||
: Contrato de Licença
|
: Contrato de Licença
|
||||||
: Opções de instalação
|
: Opções de instalação
|
||||||
: Diretório de instalação
|
: Diretório de instalação
|
||||||
|
@ -36,7 +38,7 @@ Personalizado
|
||||||
Escolha o tipo de instalação:
|
Escolha o tipo de instalação:
|
||||||
Escolha os componentes para instalar:
|
Escolha os componentes para instalar:
|
||||||
Ou, selecione os componentes opcionais que deseja instalar:
|
Ou, selecione os componentes opcionais que deseja instalar:
|
||||||
Escolha o diretório para instalar %s:
|
Escolha o diretório para instalar $(^Name):
|
||||||
Espaço disponível:
|
Espaço disponível:
|
||||||
Espaço necessário:
|
Espaço necessário:
|
||||||
Desinstalando de:
|
Desinstalando de:
|
||||||
|
|
|
@ -7,12 +7,14 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
1250
|
1250
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Revision by Sorin Sbarnea (sorin@intersol.ro) v5.1
|
# Revision by Sorin Sbarnea (sorin@intersol.ro) v5.1
|
||||||
# Translation by Cristian Pirvu (pcristip@yahoo.com) v5
|
# Translation by Cristian Pirvu (pcristip@yahoo.com) v5
|
||||||
# and Sorin Sbarnea INTERSOL SRL (sorin@intersol.ro) v4
|
# and Sorin Sbarnea INTERSOL SRL (sorin@intersol.ro) v4
|
||||||
Sistem de instalare Nullsoft %s
|
Sistem de instalare Nullsoft %s
|
||||||
Instalare %s
|
Instalare $(^Name)
|
||||||
Dezinstalare %s
|
Dezinstalare $(^Name)
|
||||||
: Licenta de utilizare
|
: Licenta de utilizare
|
||||||
: Optiuni de instalare
|
: Optiuni de instalare
|
||||||
: Directorul de instalare
|
: Directorul de instalare
|
||||||
|
@ -38,7 +40,7 @@ Nestandard
|
||||||
Alegeti tipul instalarii:
|
Alegeti tipul instalarii:
|
||||||
Alegeti componentele de instalat:
|
Alegeti componentele de instalat:
|
||||||
Sau alegeti componentele optionale pe care vreti sa le instalati:
|
Sau alegeti componentele optionale pe care vreti sa le instalati:
|
||||||
Selectati directorul In care vreti sa instalati %s:
|
Selectati directorul In care vreti sa instalati $(^Name):
|
||||||
Spatiu disponibil:
|
Spatiu disponibil:
|
||||||
Spatiu necesar:
|
Spatiu necesar:
|
||||||
Dezinstaleaza din:
|
Dezinstaleaza din:
|
||||||
|
|
|
@ -8,10 +8,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Timon [ timon@front.ru ] + 20030720
|
# Translation by Timon [ timon@front.ru ] + 20030720
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s Установка
|
$(^Name) Установка
|
||||||
%s Удаление
|
$(^Name) Удаление
|
||||||
: Лицензионное соглашение
|
: Лицензионное соглашение
|
||||||
: Опции установки
|
: Опции установки
|
||||||
: Директория установки
|
: Директория установки
|
||||||
|
@ -37,7 +39,7 @@ Nullsoft Install System %s
|
||||||
Выберите тип установки:
|
Выберите тип установки:
|
||||||
Выберите компоненты для установки:
|
Выберите компоненты для установки:
|
||||||
Или, выберите вручную компоненты, которые Вы желаете установить:
|
Или, выберите вручную компоненты, которые Вы желаете установить:
|
||||||
Выберите директорию для установки %s в:
|
Выберите директорию для установки $(^Name) в:
|
||||||
Доступно места:
|
Доступно места:
|
||||||
Необходимо места:
|
Необходимо места:
|
||||||
Удаление из:
|
Удаление из:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Vladan "vladano@EUnet.yu" Obradovic
|
# Translation by Vladan "vladano@EUnet.yu" Obradovic
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s Instalacija
|
$(^Name) Instalacija
|
||||||
%s Deinstalacija
|
$(^Name) Deinstalacija
|
||||||
: Uslovi Licence
|
: Uslovi Licence
|
||||||
: Installacione Opcije
|
: Installacione Opcije
|
||||||
: Installacioni Direktorijum
|
: Installacioni Direktorijum
|
||||||
|
@ -36,7 +38,7 @@ Posebno
|
||||||
Odaberi tip instalacije:
|
Odaberi tip instalacije:
|
||||||
Odaberi komponente koje želiš instalirati:
|
Odaberi komponente koje želiš instalirati:
|
||||||
Ili, odaberi opcione komponente koje želiš instalirati:
|
Ili, odaberi opcione komponente koje želiš instalirati:
|
||||||
Odaberi direktorijum u koji želiš instalirati %s:
|
Odaberi direktorijum u koji želiš instalirati $(^Name):
|
||||||
Slobodno na disku:
|
Slobodno na disku:
|
||||||
Potrebno na disku:
|
Potrebno na disku:
|
||||||
Deinstaliram iz:
|
Deinstaliram iz:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
9
|
9
|
||||||
# Codepage - dash (-) means ANSI code page ANSI 字码页
|
# Codepage - dash (-) means ANSI code page ANSI 字码页
|
||||||
936
|
936
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Kii Ali <kiiali@cpatch.org>, Revision Date: 2003-05-30
|
# Translation by Kii Ali <kiiali@cpatch.org>, Revision Date: 2003-05-30
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s 安装
|
$(^Name) 安装
|
||||||
%s 解除安装
|
$(^Name) 解除安装
|
||||||
: 授权条款
|
: 授权条款
|
||||||
: 安装选项
|
: 安装选项
|
||||||
: 安装文件夹
|
: 安装文件夹
|
||||||
|
@ -36,7 +38,7 @@ Nullsoft Install System %s
|
||||||
选定安装的类型:
|
选定安装的类型:
|
||||||
选定安装的组件:
|
选定安装的组件:
|
||||||
或者,自定义选定想安装的组件:
|
或者,自定义选定想安装的组件:
|
||||||
选定要安装 %s 的文件夹:
|
选定要安装 $(^Name) 的文件夹:
|
||||||
可用空间:
|
可用空间:
|
||||||
所需空间:
|
所需空间:
|
||||||
解除安装目录:
|
解除安装目录:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v3
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by trace & Kypec
|
# Translation by trace & Kypec
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
Inštalácia %s
|
Inštalácia $(^Name)
|
||||||
Odinštalácia %s
|
Odinštalácia $(^Name)
|
||||||
: Licenèná zmluva
|
: Licenèná zmluva
|
||||||
: Možnosti inštalácie
|
: Možnosti inštalácie
|
||||||
: Adresár inštalácie
|
: Adresár inštalácie
|
||||||
|
@ -36,7 +38,7 @@ Vlastn
|
||||||
Zvo¾te typ inštalácie:
|
Zvo¾te typ inštalácie:
|
||||||
Zvo¾te komponenty, ktoré sa majú nainštalova<76>:
|
Zvo¾te komponenty, ktoré sa majú nainštalova<76>:
|
||||||
Alebo, vyberte volite¾né komponenty, ktoré sa majú nainštalova<76>:
|
Alebo, vyberte volite¾né komponenty, ktoré sa majú nainštalova<76>:
|
||||||
Zvo¾te adresár do ktorého sa má %s nainštalova<76>:
|
Zvo¾te adresár do ktorého sa má $(^Name) nainštalova<76>:
|
||||||
Vo¾ný priestor:
|
Vo¾ný priestor:
|
||||||
Potrebný priestor:
|
Potrebný priestor:
|
||||||
Odinštalovávam z:
|
Odinštalovávam z:
|
||||||
|
|
|
@ -8,10 +8,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Janez Dolinar
|
# Translation by Janez Dolinar
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s Namestitev
|
$(^Name) Namestitev
|
||||||
%s Odstranitev
|
$(^Name) Odstranitev
|
||||||
: Licenčna pogodba
|
: Licenčna pogodba
|
||||||
: Možnosti namestitve
|
: Možnosti namestitve
|
||||||
: Mapa namestitve
|
: Mapa namestitve
|
||||||
|
@ -37,7 +39,7 @@ Po meri
|
||||||
Izberite tip namestitve:
|
Izberite tip namestitve:
|
||||||
Izberite bloke namestitve:
|
Izberite bloke namestitve:
|
||||||
Ali si izberite bloke namestitve, ki jih želite:
|
Ali si izberite bloke namestitve, ki jih želite:
|
||||||
Izberi mapo za namestitev %s:
|
Izberi mapo za namestitev $(^Name):
|
||||||
Prosto:
|
Prosto:
|
||||||
Zahtevano:
|
Zahtevano:
|
||||||
Odstranjujem iz:
|
Odstranjujem iz:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by MoNKi
|
# Translation by MoNKi
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
Instalación de %s
|
Instalación de $(^Name)
|
||||||
Desinstalación de %s
|
Desinstalación de $(^Name)
|
||||||
: Acuerdo de Licencia
|
: Acuerdo de Licencia
|
||||||
: Opciones de Instalación
|
: Opciones de Instalación
|
||||||
: Directorio de Instalación
|
: Directorio de Instalación
|
||||||
|
@ -36,7 +38,7 @@ Personalizada
|
||||||
Indique el tipo de instalación:
|
Indique el tipo de instalación:
|
||||||
Seleccione los componentes:
|
Seleccione los componentes:
|
||||||
O seleccione los componentes opcionales a instalar:
|
O seleccione los componentes opcionales a instalar:
|
||||||
Seleccione el directorio en el que instalar %s:
|
Seleccione el directorio en el que instalar $(^Name):
|
||||||
Espacio disponible:
|
Espacio disponible:
|
||||||
Espacio requerido:
|
Espacio requerido:
|
||||||
Desinstalando desde:
|
Desinstalando desde:
|
||||||
|
|
|
@ -8,10 +8,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Magnus Bonnevier (magnus.bonnevier@telia.com)
|
# Translation by Magnus Bonnevier (magnus.bonnevier@telia.com)
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s Setup
|
$(^Name) Setup
|
||||||
%s Avinstallation
|
$(^Name) Avinstallation
|
||||||
: Licens Avtal
|
: Licens Avtal
|
||||||
: Installations Val
|
: Installations Val
|
||||||
: Installations Katalog
|
: Installations Katalog
|
||||||
|
@ -37,7 +39,7 @@ Custom
|
||||||
Välj typ av installation:
|
Välj typ av installation:
|
||||||
Välj komponenter att installera:
|
Välj komponenter att installera:
|
||||||
Eller, välj alternativa komponenter du önskar installera:
|
Eller, välj alternativa komponenter du önskar installera:
|
||||||
Välj katalog att installera %s i:
|
Välj katalog att installera $(^Name) i:
|
||||||
Ytrymme tillgängligt:
|
Ytrymme tillgängligt:
|
||||||
Ytrymme som behövs:
|
Ytrymme som behövs:
|
||||||
Avinstallerar från:
|
Avinstallerar från:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v2
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by TuW@nNu tuwannu@hotmail.com (asdfuae)
|
# Translation by TuW@nNu tuwannu@hotmail.com (asdfuae)
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s オヤエオム鬧
|
$(^Name) µÔ´µÑé§
|
||||||
%s カヘケ。メテオヤエオム鬧
|
$(^Name) ¶Í¹¡ÒõԴµÑé§
|
||||||
: ㈤偷∨о米柰<E7B1B3>寓试犯造
|
: ㈤偷∨о米柰<E7B1B3>寓试犯造
|
||||||
: 笛青抛汀∫玫源笛椐
|
: 笛青抛汀∫玫源笛椐
|
||||||
: 饪培赐渺氛璧源笛椐
|
: 饪培赐渺氛璧源笛椐
|
||||||
|
@ -34,7 +36,7 @@ Nullsoft Install System %s
|
||||||
嗯淄∶倩岷骸颐翟吹验<EFBFBD>:
|
嗯淄∶倩岷骸颐翟吹验<EFBFBD>:
|
||||||
嗯淄·土饩喙沟旆砧甸艇∫玫源笛椐:
|
嗯淄·土饩喙沟旆砧甸艇∫玫源笛椐:
|
||||||
嗯淄·土饩喙沟焱阻规氛璧橥А颐翟吹验<EFBFBD>:
|
嗯淄·土饩喙沟焱阻规氛璧橥А颐翟吹验<EFBFBD>:
|
||||||
耆魴ヤエオム鬧 %s ナァ羯:
|
ãËéµÔ´µÑé§ $(^Name) ŧã¹:
|
||||||
喙组头砧氛栲伺淄:
|
喙组头砧氛栲伺淄:
|
||||||
喙组头砧氛璧橥А颐:
|
喙组头砧氛璧橥А颐:
|
||||||
锻埂颐翟吹验Ж摇:
|
锻埂颐翟吹验Ж摇:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
9
|
9
|
||||||
# Codepage - dash (-) means ANSI code page ANSI 字碼頁
|
# Codepage - dash (-) means ANSI code page ANSI 字碼頁
|
||||||
950
|
950
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Kii Ali <kiiali@cpatch.org>, Revision Date: 2003-05-30
|
# Translation by Kii Ali <kiiali@cpatch.org>, Revision Date: 2003-05-30
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s 安裝
|
$(^Name) 安裝
|
||||||
%s 解除安裝
|
$(^Name) 解除安裝
|
||||||
: 授權條款
|
: 授權條款
|
||||||
: 安裝選項
|
: 安裝選項
|
||||||
: 安裝資料夾
|
: 安裝資料夾
|
||||||
|
@ -36,7 +38,7 @@ Nullsoft Install System %s
|
||||||
選取安裝的類型:
|
選取安裝的類型:
|
||||||
選取安裝的元件:
|
選取安裝的元件:
|
||||||
或者,自訂選取想安裝的元件:
|
或者,自訂選取想安裝的元件:
|
||||||
選取要安裝 %s 的資料夾:
|
選取要安裝 $(^Name) 的資料夾:
|
||||||
可用空間:
|
可用空間:
|
||||||
所需空間:
|
所需空間:
|
||||||
解除安裝目錄:
|
解除安裝目錄:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v5
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Fatih BOY (fatih@smartcoding.org)
|
# Translation by Fatih BOY (fatih@smartcoding.org)
|
||||||
Nullsoft Kurulum Sistemi %s
|
Nullsoft Kurulum Sistemi %s
|
||||||
%s Kurulumu
|
$(^Name) Kurulumu
|
||||||
%s Uninstaller
|
$(^Name) Uninstaller
|
||||||
: Sözlesme
|
: Sözlesme
|
||||||
: Kurulum Ayarlari
|
: Kurulum Ayarlari
|
||||||
: Kurulum Dizini
|
: Kurulum Dizini
|
||||||
|
@ -36,7 +38,7 @@ Tamamlandi
|
||||||
Kurulum seklini seçiniz:
|
Kurulum seklini seçiniz:
|
||||||
Kurulacak paketleri seçiniz:
|
Kurulacak paketleri seçiniz:
|
||||||
Veya, kurmak istediginiz paketleri seçiniz:
|
Veya, kurmak istediginiz paketleri seçiniz:
|
||||||
%s kurulumu için bir dizin seçin:
|
$(^Name) kurulumu için bir dizin seçin:
|
||||||
Kalan bos alan:
|
Kalan bos alan:
|
||||||
Gerekli bos alan:
|
Gerekli bos alan:
|
||||||
Kaldiriliyor:
|
Kaldiriliyor:
|
||||||
|
|
|
@ -7,10 +7,12 @@ NLF v4
|
||||||
-
|
-
|
||||||
# Codepage - dash (-) means ANSI code page
|
# Codepage - dash (-) means ANSI code page
|
||||||
-
|
-
|
||||||
|
# RTL - anything else than RTL means LTR
|
||||||
|
-
|
||||||
# Translation by Yuri Holubow, Nash-Soft.com <http://www.Nash-Soft.com/home>
|
# Translation by Yuri Holubow, Nash-Soft.com <http://www.Nash-Soft.com/home>
|
||||||
Nullsoft Install System %s
|
Nullsoft Install System %s
|
||||||
%s Установка
|
$(^Name) Установка
|
||||||
%s Видалення
|
$(^Name) Видалення
|
||||||
: Лiцензiйна угода
|
: Лiцензiйна угода
|
||||||
: Опцiї установки
|
: Опцiї установки
|
||||||
: Директорiя установки
|
: Директорiя установки
|
||||||
|
@ -36,7 +38,7 @@ I
|
||||||
Виберiть тип установки:
|
Виберiть тип установки:
|
||||||
Виберiть компоненти для установки:
|
Виберiть компоненти для установки:
|
||||||
Чи, виберiть вручну компоненти, якi Ви хочете встановити:
|
Чи, виберiть вручну компоненти, якi Ви хочете встановити:
|
||||||
Виберiть директорiю для установки %s в:
|
Виберiть директорiю для установки $(^Name) в:
|
||||||
Доступно мiсця:
|
Доступно мiсця:
|
||||||
Необхiдно мiсця:
|
Необхiдно мiсця:
|
||||||
Видалення з:
|
Видалення з:
|
||||||
|
|
|
@ -2,7 +2,7 @@ StartMenu.dll shows a custom page that lets the user select a start menu program
|
||||||
folder to put shortcuts in.
|
folder to put shortcuts in.
|
||||||
|
|
||||||
To show the dialog use the Select function. This function has one required parameter
|
To show the dialog use the Select function. This function has one required parameter
|
||||||
which is the program group default name, and some more optional parameters:
|
which is the program group default name, and some more optional switches:
|
||||||
/autoadd - automatically adds the program name to the selected folder
|
/autoadd - automatically adds the program name to the selected folder
|
||||||
/noicon - doesn't show the icon in the top left corner
|
/noicon - doesn't show the icon in the top left corner
|
||||||
/text [please select...] - sets the top text to something else than
|
/text [please select...] - sets the top text to something else than
|
||||||
|
@ -14,13 +14,20 @@ which is the program group default name, and some more optional parameters:
|
||||||
the user checks this box, the return value
|
the user checks this box, the return value
|
||||||
will have > as its first character and you
|
will have > as its first character and you
|
||||||
should not create the program group.
|
should not create the program group.
|
||||||
|
/rtl - sets the direction of every control on the selection dialog
|
||||||
|
to RTL. This means every text shown on the page will be
|
||||||
|
justified to the right.
|
||||||
|
|
||||||
|
The order of the switches doesn't matter but the required parameter must come after
|
||||||
|
all of them. Every switch after the required parameter will be ignored and left
|
||||||
|
on the stack.
|
||||||
|
|
||||||
The function pushes "success", "cancel" or an error to the stack. If there was no
|
The function pushes "success", "cancel" or an error to the stack. If there was no
|
||||||
error and the user didn't press on cancel it will push the selected folder name
|
error and the user didn't press on cancel it will push the selected folder name
|
||||||
after "success". If the user checked the no shortcuts checkbox the '>' will be
|
after "success". If the user checked the no shortcuts checkbox the result will be
|
||||||
appended to the folder name. The function does not push the full path but only the
|
prefixed with '>'. The function does not push the full path but only the selected
|
||||||
selected sub-folder. It's up to you to decide if to put it in the current user or
|
sub-folder. It's up to you to decide if to put it in the current user or all
|
||||||
all users start menu.
|
users start menu.
|
||||||
|
|
||||||
Look at Example.nsi for an example.
|
Look at Example.nsi for an example.
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ char checkbox[1024];
|
||||||
int autoadd = 0;
|
int autoadd = 0;
|
||||||
int g_done = 0;
|
int g_done = 0;
|
||||||
int noicon = 0;
|
int noicon = 0;
|
||||||
|
int rtl = 0;
|
||||||
|
|
||||||
void *lpWndProcOld;
|
void *lpWndProcOld;
|
||||||
|
|
||||||
|
@ -54,6 +55,10 @@ void __declspec(dllexport) Select(HWND hwndParent, int string_size, char *variab
|
||||||
{
|
{
|
||||||
noicon = 1;
|
noicon = 1;
|
||||||
}
|
}
|
||||||
|
else if (!lstrcmpi(buf+1, "rtl"))
|
||||||
|
{
|
||||||
|
rtl = 1;
|
||||||
|
}
|
||||||
else if (!lstrcmpi(buf+1, "text"))
|
else if (!lstrcmpi(buf+1, "text"))
|
||||||
{
|
{
|
||||||
popstring(text);
|
popstring(text);
|
||||||
|
@ -73,7 +78,8 @@ void __declspec(dllexport) Select(HWND hwndParent, int string_size, char *variab
|
||||||
if (popstring(buf))
|
if (popstring(buf))
|
||||||
*buf = 0;
|
*buf = 0;
|
||||||
}
|
}
|
||||||
if (*buf) lstrcpy(progname, buf);
|
if (*buf)
|
||||||
|
lstrcpy(progname, buf);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pushstring("error reading parameters");
|
pushstring("error reading parameters");
|
||||||
|
@ -145,16 +151,22 @@ BOOL CALLBACK dlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
|
|
||||||
int y_offset = 0;
|
int y_offset = 0;
|
||||||
|
|
||||||
|
int width, height;
|
||||||
|
|
||||||
GetWindowRect(hwChild, &dialog_r);
|
GetWindowRect(hwChild, &dialog_r);
|
||||||
ScreenToClient(hwParent, (LPPOINT) &dialog_r);
|
ScreenToClient(hwParent, (LPPOINT) &dialog_r);
|
||||||
ScreenToClient(hwParent, ((LPPOINT) &dialog_r)+1);
|
ScreenToClient(hwParent, ((LPPOINT) &dialog_r)+1);
|
||||||
|
|
||||||
|
width = dialog_r.right - dialog_r.left;
|
||||||
|
height = dialog_r.bottom - dialog_r.top;
|
||||||
|
|
||||||
SetWindowPos(
|
SetWindowPos(
|
||||||
hwndDlg,
|
hwndDlg,
|
||||||
0,
|
0,
|
||||||
dialog_r.left,
|
dialog_r.left,
|
||||||
dialog_r.top,
|
dialog_r.top,
|
||||||
dialog_r.right - dialog_r.left,
|
width,
|
||||||
dialog_r.bottom - dialog_r.top,
|
height,
|
||||||
SWP_NOZORDER | SWP_NOACTIVATE
|
SWP_NOZORDER | SWP_NOACTIVATE
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -171,6 +183,19 @@ BOOL CALLBACK dlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
SendMessage(hwDirList, WM_SETFONT, (WPARAM) hFont, TRUE);
|
SendMessage(hwDirList, WM_SETFONT, (WPARAM) hFont, TRUE);
|
||||||
SendMessage(hwCheckBox, WM_SETFONT, (WPARAM) hFont, TRUE);
|
SendMessage(hwCheckBox, WM_SETFONT, (WPARAM) hFont, TRUE);
|
||||||
|
|
||||||
|
if (rtl)
|
||||||
|
{
|
||||||
|
long s;
|
||||||
|
s = GetWindowLong(hwText, GWL_STYLE);
|
||||||
|
SetWindowLong(hwText, GWL_STYLE, (s & ~SS_LEFT) | SS_RIGHT);
|
||||||
|
s = GetWindowLong(hwLocation, GWL_STYLE);
|
||||||
|
SetWindowLong(hwLocation, GWL_STYLE, (s & ~ES_LEFT) | ES_RIGHT);
|
||||||
|
s = GetWindowLong(hwDirList, GWL_EXSTYLE);
|
||||||
|
SetWindowLong(hwDirList, GWL_EXSTYLE, s | WS_EX_RIGHT | WS_EX_RTLREADING);
|
||||||
|
s = GetWindowLong(hwCheckBox, GWL_STYLE);
|
||||||
|
SetWindowLong(hwCheckBox, GWL_STYLE, s | BS_RIGHT | BS_LEFTTEXT);
|
||||||
|
}
|
||||||
|
|
||||||
if (!noicon)
|
if (!noicon)
|
||||||
{
|
{
|
||||||
SendMessage(
|
SendMessage(
|
||||||
|
@ -180,39 +205,50 @@ BOOL CALLBACK dlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
(LPARAM)LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(103))
|
(LPARAM)LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(103))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GetClientRect(hwIcon, &temp_r);
|
||||||
|
|
||||||
SetWindowPos(
|
SetWindowPos(
|
||||||
hwIcon,
|
hwIcon,
|
||||||
0,
|
0,
|
||||||
|
rtl ? width - temp_r.right : 0,
|
||||||
0,
|
0,
|
||||||
0,
|
temp_r.right,
|
||||||
32,
|
temp_r.bottom,
|
||||||
32,
|
|
||||||
SWP_NOACTIVATE | (noicon ? SWP_HIDEWINDOW : 0)
|
SWP_NOACTIVATE | (noicon ? SWP_HIDEWINDOW : 0)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!*text)
|
//GetWindowRect(hwIcon, &temp_r);
|
||||||
lstrcpy(text, "Select the Start Menu folder in which you would like to create the program's shortcuts:");
|
//ScreenToClient(hwndDlg, ((LPPOINT) &temp_r));
|
||||||
|
//ScreenToClient(hwndDlg, ((LPPOINT) &temp_r) + 1);
|
||||||
|
|
||||||
GetWindowRect(hwIcon, &temp_r);
|
if (rtl)
|
||||||
temp_r.right += 5;
|
{
|
||||||
temp_r.bottom += 5;
|
ProgressiveSetWindowPos(
|
||||||
ScreenToClient(hwndDlg, ((LPPOINT) &temp_r) + 1);
|
hwText,
|
||||||
|
0,
|
||||||
|
width - (noicon ? 0 : temp_r.right + 5),
|
||||||
|
temp_r.bottom + 2
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ProgressiveSetWindowPos(
|
||||||
|
hwText,
|
||||||
|
noicon ? 0 : temp_r.right + 5,
|
||||||
|
width - (noicon ? 0 : temp_r.right + 5),
|
||||||
|
temp_r.bottom + 2
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
ProgressiveSetWindowPos(
|
SetWindowText(hwText, *text ? text : "Select the Start Menu folder in which you would like to create the program's shortcuts:");
|
||||||
hwText,
|
|
||||||
noicon ? 0 : temp_r.right,
|
|
||||||
dialog_r.right - dialog_r.left - (noicon ? 0 : temp_r.right),
|
|
||||||
temp_r.bottom + 2
|
|
||||||
);
|
|
||||||
|
|
||||||
SetWindowText(hwText, text);
|
|
||||||
|
|
||||||
GetWindowRect(hwLocation, &temp_r);
|
GetWindowRect(hwLocation, &temp_r);
|
||||||
|
|
||||||
ProgressiveSetWindowPos(
|
ProgressiveSetWindowPos(
|
||||||
hwLocation,
|
hwLocation,
|
||||||
0,
|
0,
|
||||||
dialog_r.right - dialog_r.left,
|
width,
|
||||||
temp_r.bottom - temp_r.top
|
temp_r.bottom - temp_r.top
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -233,14 +269,14 @@ BOOL CALLBACK dlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
ProgressiveSetWindowPos(
|
ProgressiveSetWindowPos(
|
||||||
hwDirList,
|
hwDirList,
|
||||||
0,
|
0,
|
||||||
dialog_r.right - dialog_r.left,
|
width,
|
||||||
dialog_r.bottom - dialog_r.top - y_offset - (*checkbox ? temp_r.bottom - temp_r.top + 5 : 0)
|
height - y_offset - (*checkbox ? temp_r.bottom - temp_r.top + 5 : 0)
|
||||||
);
|
);
|
||||||
|
|
||||||
ProgressiveSetWindowPos(
|
ProgressiveSetWindowPos(
|
||||||
hwCheckBox,
|
hwCheckBox,
|
||||||
0,
|
0,
|
||||||
dialog_r.right - dialog_r.left,
|
width,
|
||||||
temp_r.bottom - temp_r.top
|
temp_r.bottom - temp_r.top
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ BSC32=bscmake.exe
|
||||||
# ADD BSC32 /nologo
|
# ADD BSC32 /nologo
|
||||||
LINK32=link.exe
|
LINK32=link.exe
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
|
||||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /entry:"_DllMainCRTStartup" /dll /machine:I386 /nodefaultlib /out:"../../Plugins/StartMenu.dll" /opt:nowin98
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /entry:"_DllMainCRTStartup" /dll /map /machine:I386 /nodefaultlib /out:"../../Plugins/StartMenu.dll" /opt:nowin98
|
||||||
# SUBTRACT LINK32 /pdb:none
|
# SUBTRACT LINK32 /pdb:none
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "StartMenu - Win32 Debug"
|
!ELSEIF "$(CFG)" == "StartMenu - Win32 Debug"
|
||||||
|
|
|
@ -17,11 +17,12 @@
|
||||||
#define PCD_PARAMS 2
|
#define PCD_PARAMS 2
|
||||||
#define PCD_DONE 3 // Just Continue
|
#define PCD_DONE 3 // Just Continue
|
||||||
|
|
||||||
int ParamSizeByType[6] = {0, // PAT_VOID (Size will be equal to 1)
|
int ParamSizeByType[7] = {0, // PAT_VOID (Size will be equal to 1)
|
||||||
1, // PAT_INT
|
1, // PAT_INT
|
||||||
2, // PAT_LONG
|
2, // PAT_LONG
|
||||||
1, // PAT_STRING
|
1, // PAT_STRING
|
||||||
1, // PAT_BOOLEAN
|
1, // PAT_WSTRING
|
||||||
|
1, // PAT_GUID
|
||||||
0}; // PAT_CALLBACK (Size will be equal to 1)
|
0}; // PAT_CALLBACK (Size will be equal to 1)
|
||||||
|
|
||||||
int z1, z2; // I've made them static for easier use at callback procs
|
int z1, z2; // I've made them static for easier use at callback procs
|
||||||
|
@ -36,7 +37,6 @@ HINSTANCE g_hInstance;
|
||||||
char retexpr[3] = {0xC2, 0x00, 0x00};
|
char retexpr[3] = {0xC2, 0x00, 0x00};
|
||||||
HANDLE retaddr;
|
HANDLE retaddr;
|
||||||
|
|
||||||
|
|
||||||
char *GetResultStr(SystemProc *proc)
|
char *GetResultStr(SystemProc *proc)
|
||||||
{
|
{
|
||||||
char *buf = AllocString();
|
char *buf = AllocString();
|
||||||
|
@ -180,6 +180,7 @@ PLUGINFUNCTION(Call)
|
||||||
proc = CallBack(proc);
|
proc = CallBack(proc);
|
||||||
break;
|
break;
|
||||||
case PT_PROC:
|
case PT_PROC:
|
||||||
|
case PT_VTABLEPROC:
|
||||||
proc = CallProc(proc); break;
|
proc = CallProc(proc); break;
|
||||||
case PT_STRUCT:
|
case PT_STRUCT:
|
||||||
CallStruct(proc); break;
|
CallStruct(proc); break;
|
||||||
|
@ -253,7 +254,8 @@ PLUGINFUNCTIONSHORT(Int64Op)
|
||||||
case '%':
|
case '%':
|
||||||
// It's unclear, but in this case compiler will use DivMod rountine
|
// It's unclear, but in this case compiler will use DivMod rountine
|
||||||
// instead of two separate Div and Mod rountines.
|
// instead of two separate Div and Mod rountines.
|
||||||
i3 = i1 / i2; i4 = i1 % i2;
|
if (i2 == 0) { i3 = 0; i4 = i1; }
|
||||||
|
else {i3 = i1 / i2; i4 = i1 % i2; }
|
||||||
if (*op == '/') i1 = i3; else i1 = i4;
|
if (*op == '/') i1 = i3; else i1 = i4;
|
||||||
break;
|
break;
|
||||||
case '|': if (op[1] == '|') i1 = i1 || i2; else i1 |= i2; break;
|
case '|': if (op[1] == '|') i1 = i1 || i2; else i1 |= i2; break;
|
||||||
|
@ -306,7 +308,12 @@ SystemProc *PrepareProc(BOOL NeedForCall)
|
||||||
{
|
{
|
||||||
case 0x0: SectionType = -1; break;
|
case 0x0: SectionType = -1; break;
|
||||||
case '#': SectionType = PST_PROC; ProcType = PT_NOTHING; break;
|
case '#': SectionType = PST_PROC; ProcType = PT_NOTHING; break;
|
||||||
case '(': SectionType = PST_PARAMS; ParamIndex = 1; temp3 = temp = 0; break;
|
case '(':
|
||||||
|
SectionType = PST_PARAMS;
|
||||||
|
// fake-real parameter: for COM interfaces first param is Interface Pointer
|
||||||
|
ParamIndex = ((ProcType == PT_VTABLEPROC)?(2):(1));
|
||||||
|
temp3 = temp = 0;
|
||||||
|
break;
|
||||||
case ')': SectionType = PST_RETURN; temp3 = temp = 0; break;
|
case ')': SectionType = PST_RETURN; temp3 = temp = 0; break;
|
||||||
case '?': SectionType = PST_OPTIONS; temp = 1; break;
|
case '?': SectionType = PST_OPTIONS; temp = 1; break;
|
||||||
}
|
}
|
||||||
|
@ -364,6 +371,7 @@ SystemProc *PrepareProc(BOOL NeedForCall)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PT_PROC:
|
case PT_PROC:
|
||||||
|
case PT_VTABLEPROC:
|
||||||
lstrcpy(proc->ProcName, cbuf);
|
lstrcpy(proc->ProcName, cbuf);
|
||||||
lstrcpy(proc->DllName, sbuf);
|
lstrcpy(proc->DllName, sbuf);
|
||||||
break;
|
break;
|
||||||
|
@ -389,8 +397,16 @@ SystemProc *PrepareProc(BOOL NeedForCall)
|
||||||
switch (*ib)
|
switch (*ib)
|
||||||
{
|
{
|
||||||
case ':':
|
case ':':
|
||||||
|
case '-':
|
||||||
// Is it '::'
|
// Is it '::'
|
||||||
if (*(ib+1) != ':') break;
|
if ((*(ib) == '-') && (*(ib+1) == '>'))
|
||||||
|
{
|
||||||
|
ProcType = PT_VTABLEPROC;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
if ((*(ib+1) != ':') || (*(ib) == '-')) break;
|
||||||
|
ProcType = PT_PROC;
|
||||||
|
}
|
||||||
ib++; // Skip next ':'
|
ib++; // Skip next ':'
|
||||||
|
|
||||||
if (cb > cbuf)
|
if (cb > cbuf)
|
||||||
|
@ -400,7 +416,6 @@ SystemProc *PrepareProc(BOOL NeedForCall)
|
||||||
} else *sbuf = 0; // No dll - system proc
|
} else *sbuf = 0; // No dll - system proc
|
||||||
|
|
||||||
// Ok
|
// Ok
|
||||||
ProcType = PT_PROC;
|
|
||||||
ChangesDone = PCD_DONE;
|
ChangesDone = PCD_DONE;
|
||||||
break;
|
break;
|
||||||
case '*':
|
case '*':
|
||||||
|
@ -442,8 +457,10 @@ SystemProc *PrepareProc(BOOL NeedForCall)
|
||||||
case 'L': temp2 = PAT_LONG; break;
|
case 'L': temp2 = PAT_LONG; break;
|
||||||
case 't':
|
case 't':
|
||||||
case 'T': temp2 = PAT_STRING; break;
|
case 'T': temp2 = PAT_STRING; break;
|
||||||
case 'b':
|
case 'g':
|
||||||
case 'B': temp2 = PAT_BOOLEAN; break;
|
case 'G': temp2 = PAT_GUID; break;
|
||||||
|
case 'w':
|
||||||
|
case 'W': temp2 = PAT_WSTRING; break;
|
||||||
case 'k':
|
case 'k':
|
||||||
case 'K': temp2 = PAT_CALLBACK; break;
|
case 'K': temp2 = PAT_CALLBACK; break;
|
||||||
|
|
||||||
|
@ -589,6 +606,32 @@ SystemProc *PrepareProc(BOOL NeedForCall)
|
||||||
switch (proc->ProcType)
|
switch (proc->ProcType)
|
||||||
{
|
{
|
||||||
case PT_NOTHING: break;
|
case PT_NOTHING: break;
|
||||||
|
case PT_VTABLEPROC:
|
||||||
|
{
|
||||||
|
// Use direct system proc address
|
||||||
|
int addr;
|
||||||
|
|
||||||
|
if ((proc->Dll = addr = (HANDLE) myatoi(proc->DllName)) == 0)
|
||||||
|
{
|
||||||
|
proc->ProcResult = PR_ERROR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// fake-real parameter: for COM interfaces first param is Interface Pointer
|
||||||
|
proc->Params[1].Output = IOT_NONE;
|
||||||
|
proc->Params[1].Input = AllocStr(proc->DllName);
|
||||||
|
proc->Params[1].Size = 1;
|
||||||
|
proc->Params[1].Type = PAT_INT;
|
||||||
|
proc->Params[1].Option = 0;
|
||||||
|
|
||||||
|
// addr - pointer to interface vtable
|
||||||
|
addr = *((int *)addr);
|
||||||
|
// now addr contains the pointer to first item at VTABLE
|
||||||
|
// add the index of proc
|
||||||
|
addr = addr + (myatoi(proc->ProcName)*4);
|
||||||
|
proc->Proc = *((HANDLE*)addr);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case PT_PROC:
|
case PT_PROC:
|
||||||
if (*proc->DllName == 0)
|
if (*proc->DllName == 0)
|
||||||
{
|
{
|
||||||
|
@ -607,7 +650,12 @@ SystemProc *PrepareProc(BOOL NeedForCall)
|
||||||
|
|
||||||
// Get proc address
|
// Get proc address
|
||||||
if ((proc->Proc = GetProcAddress(proc->Dll, proc->ProcName)) == NULL)
|
if ((proc->Proc = GetProcAddress(proc->Dll, proc->ProcName)) == NULL)
|
||||||
proc->ProcResult = PR_ERROR;
|
{
|
||||||
|
// automatic A discover
|
||||||
|
lstrcat(proc->ProcName, "A");
|
||||||
|
if ((proc->Proc = GetProcAddress(proc->Dll, proc->ProcName)) == NULL)
|
||||||
|
proc->ProcResult = PR_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PT_STRUCT:
|
case PT_STRUCT:
|
||||||
|
@ -634,6 +682,7 @@ void ParamsIn(SystemProc *proc)
|
||||||
{
|
{
|
||||||
int i, *place;
|
int i, *place;
|
||||||
char *realbuf;
|
char *realbuf;
|
||||||
|
LPWSTR wstr;
|
||||||
|
|
||||||
i = (proc->ParamCount > 0)?(1):(0);
|
i = (proc->ParamCount > 0)?(1):(0);
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
|
@ -654,7 +703,10 @@ void ParamsIn(SystemProc *proc)
|
||||||
// Retreive pointer to place
|
// Retreive pointer to place
|
||||||
if (proc->Params[i].Option == -1) place = (int*) proc->Params[i].Value;
|
if (proc->Params[i].Option == -1) place = (int*) proc->Params[i].Value;
|
||||||
else place = (int*) &(proc->Params[i].Value);
|
else place = (int*) &(proc->Params[i].Value);
|
||||||
|
|
||||||
|
// by default no blocks are allocated
|
||||||
|
proc->Params[i].allocatedBlock = NULL;
|
||||||
|
|
||||||
// Step 2: place it
|
// Step 2: place it
|
||||||
switch (proc->Params[i].Type)
|
switch (proc->Params[i].Type)
|
||||||
{
|
{
|
||||||
|
@ -671,10 +723,19 @@ void ParamsIn(SystemProc *proc)
|
||||||
/* if (proc->Params[i].Input == IOT_NONE)
|
/* if (proc->Params[i].Input == IOT_NONE)
|
||||||
*((int*) place) = (int) NULL;
|
*((int*) place) = (int) NULL;
|
||||||
else*/
|
else*/
|
||||||
*((int*) place) = (int) AllocStr(realbuf);
|
*((int*) place) = (int) (proc->Params[i].allocatedBlock = AllocStr(realbuf));
|
||||||
break;
|
break;
|
||||||
case PAT_BOOLEAN:
|
case PAT_WSTRING:
|
||||||
*((int*) place) = lstrcmpi(realbuf, "true");
|
case PAT_GUID:
|
||||||
|
wstr = (LPWSTR) (proc->Params[i].allocatedBlock = GlobalAlloc(GPTR, g_stringsize*2));
|
||||||
|
MultiByteToWideChar(CP_ACP, 0, realbuf, g_stringsize, wstr, g_stringsize);
|
||||||
|
if (proc->Params[i].Type == PAT_GUID)
|
||||||
|
{
|
||||||
|
*((HGLOBAL*)place) = (proc->Params[i].allocatedBlock = GlobalAlloc(GPTR, 16));
|
||||||
|
CLSIDFromString(wstr, *((LPCLSID*)place));
|
||||||
|
GlobalFree((HGLOBAL) wstr);
|
||||||
|
} else
|
||||||
|
*((LPWSTR*)place) = wstr;
|
||||||
break;
|
break;
|
||||||
case PAT_CALLBACK:
|
case PAT_CALLBACK:
|
||||||
// Generate new or use old callback
|
// Generate new or use old callback
|
||||||
|
@ -718,6 +779,7 @@ void ParamsOut(SystemProc *proc)
|
||||||
{
|
{
|
||||||
int i, *place;
|
int i, *place;
|
||||||
char *realbuf;
|
char *realbuf;
|
||||||
|
LPWSTR wstr;
|
||||||
|
|
||||||
i = proc->ParamCount;
|
i = proc->ParamCount;
|
||||||
do
|
do
|
||||||
|
@ -745,17 +807,29 @@ void ParamsOut(SystemProc *proc)
|
||||||
int num = lstrlen(*((char**) place));
|
int num = lstrlen(*((char**) place));
|
||||||
if (num >= g_stringsize) num = g_stringsize-1;
|
if (num >= g_stringsize) num = g_stringsize-1;
|
||||||
lstrcpyn(realbuf,*((char**) place), num+1);
|
lstrcpyn(realbuf,*((char**) place), num+1);
|
||||||
realbuf[num] = 0;
|
realbuf[num] = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PAT_BOOLEAN:
|
case PAT_GUID:
|
||||||
lstrcpy(realbuf,(*((int*) place))?("true"):("false"));
|
wstr = (LPWSTR) GlobalAlloc(GPTR, g_stringsize*2);
|
||||||
|
StringFromGUID2(*((REFGUID*)place), wstr, g_stringsize*2);
|
||||||
|
WideCharToMultiByte(CP_ACP, 0, wstr, g_stringsize, realbuf, g_stringsize, NULL, NULL);
|
||||||
|
GlobalFree((HGLOBAL)wstr);
|
||||||
|
break;
|
||||||
|
case PAT_WSTRING:
|
||||||
|
wstr = *((LPWSTR*)place);
|
||||||
|
WideCharToMultiByte(CP_ACP, 0, wstr, g_stringsize, realbuf, g_stringsize, NULL, NULL);
|
||||||
break;
|
break;
|
||||||
case PAT_CALLBACK:
|
case PAT_CALLBACK:
|
||||||
wsprintf(realbuf, "%d", proc->Params[i].Value);
|
wsprintf(realbuf, "%d", proc->Params[i].Value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// memory cleanup
|
||||||
|
if ((proc->Params[i].allocatedBlock != NULL) && ((proc->ProcType != PT_STRUCT)
|
||||||
|
|| (proc->Params[i].Option > 0)))
|
||||||
|
GlobalFree(proc->Params[i].allocatedBlock);
|
||||||
|
|
||||||
// Step 2: place it
|
// Step 2: place it
|
||||||
if (proc->Params[i].Output == IOT_NONE);
|
if (proc->Params[i].Output == IOT_NONE);
|
||||||
else if (proc->Params[i].Output == IOT_STACK) pushstring(realbuf);
|
else if (proc->Params[i].Output == IOT_STACK) pushstring(realbuf);
|
||||||
|
@ -1160,7 +1234,11 @@ void CallStruct(SystemProc *proc)
|
||||||
// pointer
|
// pointer
|
||||||
ptr = (char*) &(proc->Params[i].Value);
|
ptr = (char*) &(proc->Params[i].Value);
|
||||||
break;
|
break;
|
||||||
case PAT_STRING: ptr = (char*) proc->Params[i].Value; break;
|
|
||||||
|
case PAT_STRING:
|
||||||
|
case PAT_GUID:
|
||||||
|
case PAT_WSTRING:
|
||||||
|
ptr = (char*) proc->Params[i].Value; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#define PT_NOTHING 0
|
#define PT_NOTHING 0
|
||||||
#define PT_PROC 1
|
#define PT_PROC 1
|
||||||
#define PT_STRUCT 2
|
#define PT_STRUCT 2
|
||||||
|
#define PT_VTABLEPROC 3
|
||||||
|
|
||||||
// Proc results:
|
// Proc results:
|
||||||
#define PR_OK 0
|
#define PR_OK 0
|
||||||
|
@ -29,8 +30,9 @@
|
||||||
#define PAT_INT 1
|
#define PAT_INT 1
|
||||||
#define PAT_LONG 2
|
#define PAT_LONG 2
|
||||||
#define PAT_STRING 3
|
#define PAT_STRING 3
|
||||||
#define PAT_BOOLEAN 4
|
#define PAT_WSTRING 4
|
||||||
#define PAT_CALLBACK 5
|
#define PAT_GUID 5
|
||||||
|
#define PAT_CALLBACK 6
|
||||||
|
|
||||||
// Input/Output Source/Destination
|
// Input/Output Source/Destination
|
||||||
#define IOT_NONE 0
|
#define IOT_NONE 0
|
||||||
|
@ -58,6 +60,7 @@ typedef struct
|
||||||
int Size; // Value real size (should be either 1 or 2 (the number of pushes))
|
int Size; // Value real size (should be either 1 or 2 (the number of pushes))
|
||||||
int Input;
|
int Input;
|
||||||
int Output;
|
int Output;
|
||||||
|
HGLOBAL allocatedBlock; // block allocated for passing string, wstring or guid param
|
||||||
} ProcParameter;
|
} ProcParameter;
|
||||||
|
|
||||||
// Our single proc (Since the user will free proc with GlobalFree,
|
// Our single proc (Since the user will free proc with GlobalFree,
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
Microsoft Visual Studio Solution File, Format Version 7.00
|
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System", "System.vcproj", "{2FB013AB-6FD4-4239-9974-C999F4DFD70C}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System", "System.vcproj", "{2FB013AB-6FD4-4239-9974-C999F4DFD70C}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfiguration) = preSolution
|
GlobalSection(SolutionConfiguration) = preSolution
|
||||||
ConfigName.0 = Debug
|
Debug = Debug
|
||||||
ConfigName.1 = Release
|
Release = Release
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectDependencies) = postSolution
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfiguration) = postSolution
|
GlobalSection(ProjectConfiguration) = postSolution
|
||||||
{2FB013AB-6FD4-4239-9974-C999F4DFD70C}.Debug.ActiveCfg = Debug|Win32
|
{2FB013AB-6FD4-4239-9974-C999F4DFD70C}.Debug.ActiveCfg = Debug|Win32
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding = "windows-1251"?>
|
<?xml version="1.0" encoding="windows-1251"?>
|
||||||
<VisualStudioProject
|
<VisualStudioProject
|
||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="7.00"
|
Version="7.10"
|
||||||
Name="System"
|
Name="System"
|
||||||
ProjectGUID="{2FB013AB-6FD4-4239-9974-C999F4DFD70C}"
|
ProjectGUID="{2FB013AB-6FD4-4239-9974-C999F4DFD70C}"
|
||||||
Keyword="Win32Proj">
|
Keyword="Win32Proj">
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SYSTEM_EXPORTS"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SYSTEM_EXPORTS;SYSTEM_LOG_DEBUG"
|
||||||
MinimalRebuild="TRUE"
|
MinimalRebuild="TRUE"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="5"
|
RuntimeLibrary="5"
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalDependencies="kernel32.lib user32.lib RunTmChk.lib libcd.lib"
|
AdditionalDependencies="kernel32.lib user32.lib RunTmChk.lib libcd.lib"
|
||||||
OutputFile="$(OutDir)/System.dll"
|
OutputFile="d:\Program FIles\NSIS\Plugins\System.dll"
|
||||||
LinkIncremental="2"
|
LinkIncremental="2"
|
||||||
IgnoreAllDefaultLibraries="TRUE"
|
IgnoreAllDefaultLibraries="TRUE"
|
||||||
GenerateDebugInformation="TRUE"
|
GenerateDebugInformation="TRUE"
|
||||||
|
@ -53,15 +53,22 @@
|
||||||
Name="VCResourceCompilerTool"/>
|
Name="VCResourceCompilerTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCWebServiceProxyGeneratorTool"/>
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCWebDeploymentTool"/>
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="Release|Win32"
|
Name="Release|Win32"
|
||||||
OutputDirectory="Release"
|
OutputDirectory="Release"
|
||||||
IntermediateDirectory="Release"
|
IntermediateDirectory="Release"
|
||||||
ConfigurationType="2"
|
ConfigurationType="2"
|
||||||
CharacterSet="2">
|
CharacterSet="2"
|
||||||
|
WholeProgramOptimization="FALSE">
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="1"
|
Optimization="1"
|
||||||
|
@ -71,20 +78,23 @@
|
||||||
OmitFramePointers="TRUE"
|
OmitFramePointers="TRUE"
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SYSTEM_EXPORTS"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SYSTEM_EXPORTS"
|
||||||
StringPooling="TRUE"
|
StringPooling="TRUE"
|
||||||
|
ExceptionHandling="FALSE"
|
||||||
RuntimeLibrary="4"
|
RuntimeLibrary="4"
|
||||||
|
StructMemberAlignment="0"
|
||||||
BufferSecurityCheck="FALSE"
|
BufferSecurityCheck="FALSE"
|
||||||
EnableFunctionLevelLinking="TRUE"
|
EnableFunctionLevelLinking="TRUE"
|
||||||
UsePrecompiledHeader="3"
|
UsePrecompiledHeader="3"
|
||||||
AssemblerOutput="2"
|
AssemblerOutput="2"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="TRUE"
|
Detect64BitPortabilityProblems="TRUE"
|
||||||
DebugInformationFormat="3"/>
|
DebugInformationFormat="3"
|
||||||
|
CompileAs="1"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCustomBuildTool"/>
|
Name="VCCustomBuildTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalDependencies="kernel32.lib user32.lib vc7ldvrm.obj vc7lmul.obj vc7lshl.obj vc7lshr.obj chkstk.obj"
|
AdditionalDependencies="kernel32.lib user32.lib vc7ldvrm.obj vc7lmul.obj vc7lshl.obj vc7lshr.obj chkstk.obj"
|
||||||
OutputFile="$(OutDir)/System.dll"
|
OutputFile="d:\Program FIles\NSIS\Plugins\System.dll"
|
||||||
LinkIncremental="1"
|
LinkIncremental="1"
|
||||||
IgnoreAllDefaultLibraries="TRUE"
|
IgnoreAllDefaultLibraries="TRUE"
|
||||||
GenerateDebugInformation="FALSE"
|
GenerateDebugInformation="FALSE"
|
||||||
|
@ -108,10 +118,18 @@
|
||||||
Name="VCResourceCompilerTool"/>
|
Name="VCResourceCompilerTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCWebServiceProxyGeneratorTool"/>
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCWebDeploymentTool"/>
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
</Configurations>
|
</Configurations>
|
||||||
|
<References>
|
||||||
|
</References>
|
||||||
<Files>
|
<Files>
|
||||||
<Filter
|
<Filter
|
||||||
Name="Source Files"
|
Name="Source Files"
|
||||||
|
@ -130,9 +148,6 @@
|
||||||
<File
|
<File
|
||||||
RelativePath="Plugin.c">
|
RelativePath="Plugin.c">
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="System.c">
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="stdafx.c">
|
RelativePath="stdafx.c">
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
|
@ -148,6 +163,15 @@
|
||||||
UsePrecompiledHeader="1"/>
|
UsePrecompiledHeader="1"/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="System.c">
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
ExpandAttributedSource="TRUE"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
</File>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
<Filter
|
||||||
Name="Header Files"
|
Name="Header Files"
|
||||||
|
@ -159,10 +183,10 @@
|
||||||
RelativePath="Plugin.h">
|
RelativePath="Plugin.h">
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="System.h">
|
RelativePath="stdafx.h">
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="stdafx.h">
|
RelativePath="System.h">
|
||||||
</File>
|
</File>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
<Filter
|
||||||
|
|
|
@ -93,6 +93,10 @@
|
||||||
; HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop);
|
; HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop);
|
||||||
!define sysBitBlt "gdi32::BitBlt(i, i, i, i, i, i, i, i, i) i"
|
!define sysBitBlt "gdi32::BitBlt(i, i, i, i, i, i, i, i, i) i"
|
||||||
|
|
||||||
|
; proposed by abgandar
|
||||||
|
; int AddFontResource(LPCTSTR lpszFilename);
|
||||||
|
!define sysAddFontResource "gdi32::AddFontResourceA(t) i"
|
||||||
|
|
||||||
; HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint);
|
; HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint);
|
||||||
!define sysBeginPaint "user32::BeginPaint(i, i) i"
|
!define sysBeginPaint "user32::BeginPaint(i, i) i"
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ to the people living there, they'll always help you.
|
||||||
By the way, any help in writing complete and easy-to-go System plugin
|
By the way, any help in writing complete and easy-to-go System plugin
|
||||||
documentation will be appreciated.
|
documentation will be appreciated.
|
||||||
|
|
||||||
Note: it will be best to turn plugin onload off in case of using System
|
Note: it will be best to turn plugin unload off in case of using System
|
||||||
plugin (SetPluginUnload alwaysoff).
|
plugin (SetPluginUnload alwaysoff).
|
||||||
|
|
||||||
============== Main functions ==============
|
============== Main functions ==============
|
||||||
|
@ -78,6 +78,9 @@ Proc:
|
||||||
::addr -> Handle to system proc (memory address)
|
::addr -> Handle to system proc (memory address)
|
||||||
*addr -> Structure
|
*addr -> Structure
|
||||||
* -> New structure
|
* -> New structure
|
||||||
|
IPtr->MemberIdx -> Call member with member index from interface given
|
||||||
|
by interface pointer IPtr (IPtr will be passed to
|
||||||
|
proc automatically, use like C++ call).
|
||||||
nothing -> Dup proc, usually callback or for future defenition
|
nothing -> Dup proc, usually callback or for future defenition
|
||||||
|
|
||||||
proc -> Ready proc specification for use or redefinition
|
proc -> Ready proc specification for use or redefinition
|
||||||
|
@ -109,8 +112,8 @@ Params & Return - Type:
|
||||||
i - int (includes char, byte, short, handles, pointers and so on)
|
i - int (includes char, byte, short, handles, pointers and so on)
|
||||||
l - long & large integer (know as int64)
|
l - long & large integer (know as int64)
|
||||||
t - text, string (LPCSTR, pointer to first character)
|
t - text, string (LPCSTR, pointer to first character)
|
||||||
b - boolean (needs/returns 'true':'false') - by the fact this type is
|
w - WCHAR text, or unicode string.
|
||||||
senseless -> usual integer can be used ('0':'1')
|
g - GUID
|
||||||
k - callback. See Callback section.
|
k - callback. See Callback section.
|
||||||
|
|
||||||
* - pointer specifier -> the proc needs the pointer to type, affects
|
* - pointer specifier -> the proc needs the pointer to type, affects
|
||||||
|
@ -124,7 +127,10 @@ For structures:
|
||||||
&i - smaller types: &i4, &i2 (short), &i1 (byte)
|
&i - smaller types: &i4, &i2 (short), &i1 (byte)
|
||||||
&l - cumbersome, but &lN means the structure size (N bytes value),
|
&l - cumbersome, but &lN means the structure size (N bytes value),
|
||||||
calculated automaticaly, outputed always as int (N could be 0).
|
calculated automaticaly, outputed always as int (N could be 0).
|
||||||
&t - structure contains plain text, &tN - lenght == N bytes.
|
&t - structure contains plain text, &tN, where lenght == N bytes.
|
||||||
|
&w - structure contains plain unicode text, &tN,
|
||||||
|
where lenght == (N)/2 chars = N bytes.
|
||||||
|
&g - &gN copy N bytes of plain GUID. in fact guid size is 16 :)
|
||||||
|
|
||||||
----------------------------------
|
----------------------------------
|
||||||
Params & Return - Source / Destination:
|
Params & Return - Source / Destination:
|
||||||
|
|
|
@ -2,35 +2,27 @@
|
||||||
// Microsoft Developer Studio generated include file.
|
// Microsoft Developer Studio generated include file.
|
||||||
// Used by resource.rc
|
// Used by resource.rc
|
||||||
//
|
//
|
||||||
|
#ifndef DS_SHELLFONT
|
||||||
|
#define DS_SHELLFONT (DS_SETFONT | DS_FIXEDSYS)
|
||||||
|
#endif
|
||||||
|
|
||||||
#define IDC_BACK 3
|
#define IDC_BACK 3
|
||||||
#define IDD_DIALOG1 101
|
|
||||||
#define IDI_ICON1 102
|
|
||||||
#define IDD_DIALOG2 102
|
|
||||||
#define IDD_LICENSE 102
|
#define IDD_LICENSE 102
|
||||||
|
#define IDD_LICENSE_FSRB 108
|
||||||
|
#define IDD_LICENSE_FSCB 109
|
||||||
#define IDI_ICON2 103
|
#define IDI_ICON2 103
|
||||||
#define IDD_DIR 103
|
#define IDD_DIR 103
|
||||||
#define IDD_SELCOM 104
|
#define IDD_SELCOM 104
|
||||||
#define IDD_INST 105
|
#define IDD_INST 105
|
||||||
#define IDD_INSTFILES 106
|
#define IDD_INSTFILES 106
|
||||||
#define IDD_UNINST 107
|
#define IDD_UNINST 107
|
||||||
#define IDB_BITMAP1 109
|
|
||||||
#define IDB_BITMAP2 110
|
|
||||||
#define IDI_ICON3 110
|
|
||||||
#define IDD_VERIFY 111
|
#define IDD_VERIFY 111
|
||||||
#define IDB_BITMAP3 111
|
#define IDB_BITMAP1 110
|
||||||
#define IDC_EDIT1 1000
|
#define IDC_EDIT1 1000
|
||||||
#define IDC_BROWSE 1001
|
#define IDC_BROWSE 1001
|
||||||
#define IDC_COPYRIGHT 1003
|
|
||||||
#define IDC_PROGRESS 1004
|
#define IDC_PROGRESS 1004
|
||||||
#define IDC_INTROTEXT 1006
|
#define IDC_INTROTEXT 1006
|
||||||
#define IDC_WMA 1007
|
|
||||||
#define IDC_CHECK1 1008
|
#define IDC_CHECK1 1008
|
||||||
#define IDC_MJF 1008
|
|
||||||
#define IDC_VERSION 1009
|
|
||||||
#define IDC_EDIT2 1010
|
|
||||||
#define IDC_DIRCAPTION 1011
|
|
||||||
#define IDC_STATUSTEXT 1014
|
|
||||||
#define IDC_LICTEXT 1015
|
|
||||||
#define IDC_LIST1 1016
|
#define IDC_LIST1 1016
|
||||||
#define IDC_COMBO1 1017
|
#define IDC_COMBO1 1017
|
||||||
#define IDC_CHILDRECT 1018
|
#define IDC_CHILDRECT 1018
|
||||||
|
@ -40,9 +32,6 @@
|
||||||
#define IDC_TEXT2 1022
|
#define IDC_TEXT2 1022
|
||||||
#define IDC_SPACEREQUIRED 1023
|
#define IDC_SPACEREQUIRED 1023
|
||||||
#define IDC_SPACEAVAILABLE 1024
|
#define IDC_SPACEAVAILABLE 1024
|
||||||
#define IDC_INSTVER 1024
|
|
||||||
#define IDC_UNINSTTEXT 1025
|
|
||||||
#define IDC_PROGRESSTEXT 1026
|
|
||||||
#define IDC_SHOWDETAILS 1027
|
#define IDC_SHOWDETAILS 1027
|
||||||
#define IDC_VERSTR 1028
|
#define IDC_VERSTR 1028
|
||||||
#define IDC_UNINSTFROM 1029
|
#define IDC_UNINSTFROM 1029
|
||||||
|
@ -50,6 +39,8 @@
|
||||||
#define IDC_ULICON 1031
|
#define IDC_ULICON 1031
|
||||||
#define IDC_TREE1 1032
|
#define IDC_TREE1 1032
|
||||||
#define IDC_BRANDIMAGE 1033
|
#define IDC_BRANDIMAGE 1033
|
||||||
|
#define IDC_LICENSEAGREE 1034
|
||||||
|
#define IDC_LICENSEDISAGREE 1035
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
|
@ -57,7 +48,9 @@
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 112
|
#define _APS_NEXT_RESOURCE_VALUE 112
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1034
|
#define _APS_NEXT_CONTROL_VALUE 1036
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -25,92 +25,156 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
// Dialog
|
// Dialog
|
||||||
//
|
//
|
||||||
|
|
||||||
IDD_LICENSE DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_LICENSE DIALOGEX 0, 0, 266, 130
|
||||||
STYLE DS_CONTROL | DS_SHELLFONT | WS_CHILD
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON IDI_ICON2,IDC_ULICON,0,0,20,20
|
ICON IDI_ICON2,IDC_ULICON,0,0,22,20
|
||||||
LTEXT "",IDC_INTROTEXT,25,0,241,23
|
LTEXT "",IDC_INTROTEXT,25,0,241,23
|
||||||
CONTROL "",IDC_EDIT1,"RichEdit20A",WS_BORDER | WS_VSCROLL |
|
CONTROL "",IDC_EDIT1,"RichEdit20A",WS_BORDER | WS_VSCROLL |
|
||||||
0x804,0,24,266,105
|
0x804,0,24,266,105
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_DIR DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_LICENSE_FSRB DIALOG DISCARDABLE 0, 0, 266, 130
|
||||||
STYLE DS_CONTROL | DS_SHELLFONT | WS_CHILD
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CAPTION
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
ICON IDI_ICON2,1031,0,0,22,20
|
||||||
|
LTEXT "",IDC_INTROTEXT,25,0,241,23
|
||||||
|
CONTROL "",IDC_EDIT1,"RichEdit20A",WS_BORDER | WS_VSCROLL |
|
||||||
|
0x804,0,24,266,85
|
||||||
|
CONTROL "",IDC_LICENSEDISAGREE,"Button",BS_AUTORADIOBUTTON |
|
||||||
|
WS_TABSTOP,0,120,266,9
|
||||||
|
CONTROL "",IDC_LICENSEAGREE,"Button",BS_AUTORADIOBUTTON |
|
||||||
|
WS_TABSTOP,0,110,266,9
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_LICENSE_FSCB DIALOG DISCARDABLE 0, 0, 266, 130
|
||||||
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CAPTION
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
ICON IDI_ICON2,1031,0,0,22,20
|
||||||
|
LTEXT "",IDC_INTROTEXT,25,0,241,23
|
||||||
|
CONTROL "",IDC_EDIT1,"RichEdit20A",WS_BORDER | WS_VSCROLL |
|
||||||
|
0x804,0,24,266,95
|
||||||
|
CONTROL "",IDC_LICENSEAGREE,"Button",BS_AUTOCHECKBOX |
|
||||||
|
WS_TABSTOP,0,120,266,9
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_DIR DIALOGEX 0, 0, 266, 130
|
||||||
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD
|
||||||
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
EDITTEXT IDC_DIR,8,49,187,12,ES_AUTOHSCROLL
|
EDITTEXT IDC_DIR,8,49,187,12,ES_AUTOHSCROLL
|
||||||
PUSHBUTTON "",IDC_BROWSE,202,48,55,14
|
PUSHBUTTON "",IDC_BROWSE,202,48,55,14
|
||||||
ICON IDI_ICON2,IDC_ULICON,0,0,20,20
|
ICON IDI_ICON2,IDC_ULICON,0,0,22,20
|
||||||
CONTROL "",IDC_SELDIRTEXT,"Static",SS_LEFTNOWORDWRAP,
|
|
||||||
0,36,265,8
|
CONTROL "",IDC_SPACEAVAILABLE,"Static",SS_LEFTNOWORDWRAP,0,122,
|
||||||
CONTROL "",IDC_SPACEAVAILABLE,"Static",SS_LEFTNOWORDWRAP,0,122,265,8
|
265,8
|
||||||
CONTROL "",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE |
|
CONTROL "",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE |
|
||||||
WS_TABSTOP,8,65,118,10
|
WS_TABSTOP,8,71,118,10
|
||||||
CONTROL "",IDC_SPACEREQUIRED,"Static",SS_LEFTNOWORDWRAP,0,111,265,8
|
CONTROL "",IDC_SPACEREQUIRED,"Static",SS_LEFTNOWORDWRAP,0,111,
|
||||||
|
265,8
|
||||||
LTEXT "",IDC_INTROTEXT,25,0,241,34
|
LTEXT "",IDC_INTROTEXT,25,0,241,34
|
||||||
|
GROUPBOX "",IDC_SELDIRTEXT,1,38,264,30
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_SELCOM DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_SELCOM DIALOGEX 0, 0, 266, 130
|
||||||
STYLE DS_CONTROL | DS_SHELLFONT | WS_CHILD
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
COMBOBOX IDC_COMBO1,114,25,152,102,CBS_DROPDOWNLIST | WS_VSCROLL |
|
COMBOBOX IDC_COMBO1,114,25,152,102,CBS_DROPDOWNLIST | NOT
|
||||||
WS_TABSTOP | NOT WS_VISIBLE
|
WS_VISIBLE | WS_VSCROLL | WS_TABSTOP
|
||||||
ICON IDI_ICON2,IDC_ULICON,0,0,21,20
|
ICON IDI_ICON2,IDC_ULICON,0,0,22,20
|
||||||
LTEXT "",IDC_TEXT2,0,40,108,65
|
LTEXT "",IDC_TEXT2,0,40,108,65
|
||||||
CONTROL "",IDC_TEXT1,"Static",SS_LEFTNOWORDWRAP,0,27,108,8
|
CONTROL "",IDC_TEXT1,"Static",SS_LEFTNOWORDWRAP,0,27,108,8
|
||||||
CONTROL "",IDC_SPACEREQUIRED,"Static",SS_LEFTNOWORDWRAP,0,111,111,8
|
LTEXT "",IDC_SPACEREQUIRED,0,111,111,18,NOT WS_GROUP
|
||||||
LTEXT "",IDC_INTROTEXT,25,0,241,25
|
LTEXT "",IDC_INTROTEXT,25,0,241,25
|
||||||
CONTROL "",IDC_TREE1,"SysTreeView32",TVS_HASBUTTONS |
|
CONTROL "",IDC_TREE1,"SysTreeView32",TVS_HASBUTTONS |
|
||||||
TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP |
|
TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP |
|
||||||
WS_BORDER | WS_TABSTOP,114,39,151,90
|
WS_BORDER | WS_TABSTOP,114,39,151,90
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_INST DIALOGEX DISCARDABLE 0, 0, 280, 162
|
IDD_INST DIALOGEX 0, 0, 280, 162
|
||||||
STYLE DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_BORDER
|
STYLE DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION |
|
||||||
FONT 8, "MS Shell Dlg"
|
WS_SYSMENU
|
||||||
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
PUSHBUTTON "",IDC_BACK,171,142,50,14,WS_GROUP | NOT WS_VISIBLE
|
PUSHBUTTON "",IDC_BACK,171,142,50,14,NOT WS_VISIBLE | WS_GROUP
|
||||||
PUSHBUTTON "",IDOK,223,142,50,14
|
PUSHBUTTON "",IDOK,223,142,50,14
|
||||||
PUSHBUTTON "",IDCANCEL,7,142,50,14
|
PUSHBUTTON "",IDCANCEL,7,142,50,14
|
||||||
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ | WS_GROUP,7,138,267,1
|
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ | WS_GROUP,7,138,
|
||||||
CONTROL "",IDC_CHILDRECT,"Static",SS_BLACKRECT | NOT WS_VISIBLE | WS_GROUP,
|
267,1
|
||||||
7,6,266,130
|
CONTROL "",IDC_CHILDRECT,"Static",SS_BLACKRECT | NOT WS_VISIBLE |
|
||||||
CTEXT "",IDC_VERSTR,59,145,108,8,WS_DISABLED | WS_GROUP
|
WS_GROUP,7,6,266,130
|
||||||
|
CTEXT "",IDC_VERSTR,59,145,108,8,WS_DISABLED
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_INSTFILES DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_INSTFILES DIALOGEX 0, 0, 266, 130
|
||||||
STYLE DS_CONTROL | DS_SHELLFONT | WS_CHILD
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
CONTROL "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,24,10,241,11
|
CONTROL "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,24,10,241,
|
||||||
CONTROL "",IDC_INTROTEXT,"Static",SS_LEFTNOWORDWRAP,
|
11
|
||||||
24,0,241,8
|
CONTROL "",IDC_INTROTEXT,"Static",SS_LEFTNOWORDWRAP,24,0,241,8
|
||||||
CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SINGLESEL |
|
CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SINGLESEL |
|
||||||
LVS_NOCOLUMNHEADER | NOT WS_VISIBLE | WS_BORDER |
|
LVS_NOCOLUMNHEADER | NOT WS_VISIBLE | WS_BORDER |
|
||||||
WS_TABSTOP,0,25,265,104
|
WS_TABSTOP,0,25,265,104
|
||||||
ICON IDI_ICON2,IDC_ULICON,0,0,20,20
|
ICON IDI_ICON2,IDC_ULICON,0,0,22,20
|
||||||
PUSHBUTTON "",IDC_SHOWDETAILS,0,28,60,14,NOT WS_TABSTOP
|
PUSHBUTTON "",IDC_SHOWDETAILS,0,28,60,14,NOT WS_TABSTOP
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_UNINST DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_UNINST DIALOGEX 0, 0, 266, 130
|
||||||
STYLE DS_CONTROL | DS_SHELLFONT | WS_CHILD
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON IDI_ICON2,IDC_ULICON,0,1,20,20
|
ICON IDI_ICON2,IDC_ULICON,0,1,22,20
|
||||||
LTEXT "",IDC_UNINSTFROM,0,45,55,8
|
LTEXT "",IDC_UNINSTFROM,0,45,55,8
|
||||||
EDITTEXT IDC_EDIT1,56,43,209,12,ES_AUTOHSCROLL | ES_READONLY
|
EDITTEXT IDC_EDIT1,56,43,209,12,ES_AUTOHSCROLL | ES_READONLY
|
||||||
LTEXT "",IDC_INTROTEXT,25,0,241,34
|
LTEXT "",IDC_INTROTEXT,25,0,241,34
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_VERIFY DIALOGEX DISCARDABLE 0, 0, 162, 22
|
IDD_VERIFY DIALOGEX 0, 0, 162, 22
|
||||||
STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE
|
STYLE DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
CTEXT "",IDC_STR,7,7,148,8
|
CTEXT "",IDC_STR,7,7,148,8
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// DESIGNINFO
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
GUIDELINES DESIGNINFO DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
"IDD_INST$(NSIS_CONFIG_VISIBLE_SUPPORT)", DIALOG
|
||||||
|
BEGIN
|
||||||
|
LEFTMARGIN, 7
|
||||||
|
RIGHTMARGIN, 273
|
||||||
|
TOPMARGIN, 6
|
||||||
|
BOTTOMMARGIN, 156
|
||||||
|
END
|
||||||
|
|
||||||
|
"IDD_INSTFILES$(NSIS_CONFIG_VISIBLE_SUPPORT)", DIALOG
|
||||||
|
BEGIN
|
||||||
|
RIGHTMARGIN, 246
|
||||||
|
BOTTOMMARGIN, 125
|
||||||
|
END
|
||||||
|
|
||||||
|
"IDD_VERIFY$(_NSIS_CONFIG_VERIFYDIALOG)", DIALOG
|
||||||
|
BEGIN
|
||||||
|
LEFTMARGIN, 7
|
||||||
|
RIGHTMARGIN, 155
|
||||||
|
TOPMARGIN, 7
|
||||||
|
BOTTOMMARGIN, 15
|
||||||
|
END
|
||||||
|
END
|
||||||
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
|
@ -125,6 +189,7 @@ END
|
||||||
2 TEXTINCLUDE DISCARDABLE
|
2 TEXTINCLUDE DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
"#include ""afxres.h""\r\n"
|
"#include ""afxres.h""\r\n"
|
||||||
|
"#include ""config.h""\0"
|
||||||
END
|
END
|
||||||
|
|
||||||
3 TEXTINCLUDE DISCARDABLE
|
3 TEXTINCLUDE DISCARDABLE
|
||||||
|
@ -134,4 +199,7 @@ END
|
||||||
|
|
||||||
#endif // APSTUDIO_INVOKED
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
#endif
|
#endif // English (U.S.) resources
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -32,13 +32,13 @@ Specifies whether or not to use a gradient background window. If 'off', the inst
|
||||||
|
|
||||||
\S2{abrandingtext} BrandingText
|
\S2{abrandingtext} BrandingText
|
||||||
|
|
||||||
\c [/LANG=lang_id] /TRIM(LEFT|RIGHT|CENTER) text
|
\c /TRIM(LEFT|RIGHT|CENTER) text
|
||||||
|
|
||||||
Sets the text that is shown (by default it is 'Nullsoft Install System vX.XX') in the bottom of the install window. Setting this to an empty string ("") uses the default; to set the string to blank, use " " (a space). If it doesn't matter to you, leave it the default so that everybody can know why the installer didn't suck. heh. Use /TRIMLEFT, /TRIMRIGHT or /TRIMCENTER to trim down the size of the control to the size of the string.
|
Sets the text that is shown (by default it is 'Nullsoft Install System vX.XX') in the bottom of the install window. Setting this to an empty string ("") uses the default; to set the string to blank, use " " (a space). If it doesn't matter to you, leave it the default so that everybody can know why the installer didn't suck. heh. Use /TRIMLEFT, /TRIMRIGHT or /TRIMCENTER to trim down the size of the control to the size of the string.
|
||||||
|
|
||||||
\S2{acaption} Caption
|
\S2{acaption} Caption
|
||||||
|
|
||||||
\c [/LANG=lang_id] caption
|
\c caption
|
||||||
|
|
||||||
Sets what the titlebars of the installer will display. By default, it is 'Name Setup', where Name is specified with the \R{aname}{Name command}. You can, however, override it with 'MyApp Installer' or whatever. If you specify an empty string (""), the default will be used (you can however specify " " to achieve a blank string)
|
Sets what the titlebars of the installer will display. By default, it is 'Name Setup', where Name is specified with the \R{aname}{Name command}. You can, however, override it with 'MyApp Installer' or whatever. If you specify an empty string (""), the default will be used (you can however specify " " to achieve a blank string)
|
||||||
|
|
||||||
|
@ -72,13 +72,13 @@ This bitmap should have a size of 96x16 pixels, no more than 8bpp (256 colors) a
|
||||||
|
|
||||||
\S2{acompletedtext} CompletedText
|
\S2{acompletedtext} CompletedText
|
||||||
|
|
||||||
\c [/LANG=lang_id] Completed text
|
\c Completed text
|
||||||
|
|
||||||
Replaces the default text ("Completed") that is printed at the end of the install if parameter is specified. Otherwise, the default is used.
|
Replaces the default text ("Completed") that is printed at the end of the install if parameter is specified. Otherwise, the default is used.
|
||||||
|
|
||||||
\S2{acomponenttext} ComponentText
|
\S2{acomponenttext} ComponentText
|
||||||
|
|
||||||
\c [[/LANG=lang_id] text [subtext] [subtext2]]
|
\c [text [subtext] [subtext2]]
|
||||||
|
|
||||||
Specifies a string that is above the component list. This can be something that notifies the user what it is they are actually installing. Note that if no parameter is specified, or if the ComponentText command is omitted, then the component page will not be visible, and all of the sections will be installed. Note: if text is specified and non-empty and you leave subtext or subtext2 empty, the defaults will be used (to set one to blank, use a string like " "). empty strings mean default on subtext and subtext2. Likewise, if you wish to enable the component page, but don't want any text on the top line, set text to " ".
|
Specifies a string that is above the component list. This can be something that notifies the user what it is they are actually installing. Note that if no parameter is specified, or if the ComponentText command is omitted, then the component page will not be visible, and all of the sections will be installed. Note: if text is specified and non-empty and you leave subtext or subtext2 empty, the defaults will be used (to set one to blank, use a string like " "). empty strings mean default on subtext and subtext2. Likewise, if you wish to enable the component page, but don't want any text on the top line, set text to " ".
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ Specifies whether or not the installer will perform a CRC on itself before allow
|
||||||
|
|
||||||
\S2{adetailsbuttontext} DetailsButtonText
|
\S2{adetailsbuttontext} DetailsButtonText
|
||||||
|
|
||||||
\c [/LANG=lang_id] show details text
|
\c show details text
|
||||||
|
|
||||||
Replaces the default details button text of "Show details", if parameter is specified (otherwise the default is used).
|
Replaces the default details button text of "Show details", if parameter is specified (otherwise the default is used).
|
||||||
|
|
||||||
|
@ -102,13 +102,19 @@ Specifies whether or not the user will see the directory selection page. Note th
|
||||||
|
|
||||||
\S2{adirtext} DirText
|
\S2{adirtext} DirText
|
||||||
|
|
||||||
\c [[/LANG=lang_id] text [subtext] [browse text]]
|
\c [text] [subtext] [browse_button_text] [browse_dlg_text]
|
||||||
|
|
||||||
Specifies a string that is above the directory selection area. If this command is not specified, or no parameter is specified, then the directory page is never visible to the user (even if DirShow show is specified). If subtext is specified and not empty, it overrides the default text above the path entry box ("Select the directory to install MyApp in:"). If browse button text is specified but not empty, it overrides the default browse button text ("Browse...").
|
Specifies a string that is above the directory selection area. If this command is not specified, or no parameter is specified, then the directory page is never visible to the user (even if DirShow show is specified). If subtext is specified and not empty, it overrides the default text above the path entry box ("Select the directory to install MyApp in:"). If browse button text is specified but not empty, it overrides the default browse button text ("Browse...").
|
||||||
|
|
||||||
|
\S2{adirvar} DirVar
|
||||||
|
|
||||||
|
\c user_var(dir input/output)
|
||||||
|
|
||||||
|
Specifies which variable is to be used to contain the directory selected. This variable should contain the default value too. This allows to easily create two different directory pages that will not require you to move values in and out of $INSTDIR. The default variable is $INSTDIR. This can only be used in \R{pageex}{PageEx} and for directory and uninstConfirm pages.
|
||||||
|
|
||||||
\S2{a} FileErrorText
|
\S2{a} FileErrorText
|
||||||
|
|
||||||
\c [/LANG=lang_id] file error text
|
\c file error text
|
||||||
|
|
||||||
Replaces the default text that comes up when a file cannot be written to. This string can contain a reference to $0, which is the filename ($0 is temporarily changed to this value). Example: "Can not write to file $\\r$\\n$0$\\r$\\ngood luck, bitch.".
|
Replaces the default text that comes up when a file cannot be written to. This string can contain a reference to $0, which is the filename ($0 is temporarily changed to this value). Example: "Can not write to file $\\r$\\n$0$\\r$\\ngood luck, bitch.".
|
||||||
|
|
||||||
|
@ -120,7 +126,7 @@ Sets the icon of the installer. Every icon in the icon file will be included in
|
||||||
|
|
||||||
\S2{ainstallbuttontext} InstallButtonText
|
\S2{ainstallbuttontext} InstallButtonText
|
||||||
|
|
||||||
\c [/LANG=lang_id] install button text
|
\c install button text
|
||||||
|
|
||||||
If parameter is specified, overrides the default install button text (of "Install") with the specified text.
|
If parameter is specified, overrides the default install button text (of "Install") with the specified text.
|
||||||
|
|
||||||
|
@ -150,7 +156,7 @@ Valid values for flag are "smooth" (smooth the progress bar) or "colored" (color
|
||||||
|
|
||||||
\S2{ainsttype} InstType
|
\S2{ainsttype} InstType
|
||||||
|
|
||||||
\c install_type_name | /NOCUSTOM | ([/LANG=lang_id] /CUSTOMSTRING=str) | /COMPONENTSONLYONCUSTOM
|
\c install_type_name | /NOCUSTOM | /CUSTOMSTRING=str | /COMPONENTSONLYONCUSTOM
|
||||||
|
|
||||||
Adds an install type to the install type list, or disables the custom install type. There can be as many as 32 types, each one specifying the name of the install. Instead of an "hard-coded" name you can use User Variables which are processed at Runtime. This allows you to change InstType name dynamically. Another way of changing the InstType name during runtime is the \R{sinsttypesettext}{InstTypeSetText} command. The difference is that with InstTypeSetText you are saving your precious user variables. The first type is the default (generally 'Typical'). Each type is numbered, starting at 1. See SectionIn for information on how those numbers are used. If the /NOCUSTOM switch is specified, then the "custom" install type is disabled, and the user has to choose one of the pre-defined install types. Alternatively, if the /CUSTOMSTRING switch is specified, the parameter will override the "Custom" install type text. Alternatively, if the /COMPONENTSONLYONCUSTOM flag is specified, the component list will only be show
|
Adds an install type to the install type list, or disables the custom install type. There can be as many as 32 types, each one specifying the name of the install. Instead of an "hard-coded" name you can use User Variables which are processed at Runtime. This allows you to change InstType name dynamically. Another way of changing the InstType name during runtime is the \R{sinsttypesettext}{InstTypeSetText} command. The difference is that with InstTypeSetText you are saving your precious user variables. The first type is the default (generally 'Typical'). Each type is numbered, starting at 1. See SectionIn for information on how those numbers are used. If the /NOCUSTOM switch is specified, then the "custom" install type is disabled, and the user has to choose one of the pre-defined install types. Alternatively, if the /CUSTOMSTRING switch is specified, the parameter will override the "Custom" install type text. Alternatively, if the /COMPONENTSONLYONCUSTOM flag is specified, the component list will only be show
|
||||||
n if the "Custom" install type is selected.
|
n if the "Custom" install type is selected.
|
||||||
|
@ -163,33 +169,33 @@ Sets the background color of the license data. Color is specified using the form
|
||||||
|
|
||||||
\S2{alicensedata} LicenseData
|
\S2{alicensedata} LicenseData
|
||||||
|
|
||||||
\c [/LANG=lang_id] licdata.(txt|rtf)
|
\c licdata.(txt|rtf)
|
||||||
|
|
||||||
Specifies a text file or a RTF file to use for the license that the user can read. Omit this to not have a license displayed. Note that the file must be in the evil DOS text format (\\r\\n, yeah!)
|
Specifies a text file or a RTF file to use for the license that the user can read. Omit this to not have a license displayed. Note that the file must be in the evil DOS text format (\\r\\n, yeah!). To define a multilingual license data use \R{licenselangstring}{LicenseLangString}.
|
||||||
|
|
||||||
If you make your license file a RTF file it is recommended you edit it with WordPad and not MS Word. Using WordPad will result in a much smaller file.
|
If you make your license file a RTF file it is recommended you edit it with WordPad and not MS Word. Using WordPad will result in a much smaller file.
|
||||||
|
|
||||||
\S2{alicenseforceselection} LicenseForceSelection
|
\S2{alicenseforceselection} LicenseForceSelection
|
||||||
|
|
||||||
\c [/LANG=lang_id] (checkbox [accept_text] | radiobuttons [accept_text] [decline_text] | \\<b\\>off\\</b\\>)
|
\c (checkbox [accept_text] | radiobuttons [accept_text] [decline_text] | \\<b\\>off\\</b\\>)
|
||||||
|
|
||||||
Specifies if the displayed license must be accept explicit or not. This can be done either by a checkbox or by radiobuttons. By default the "next button" is disabled and will only be enabled if the checkbox is enabled or the right radio button is selected. If off is specified the "next button" is enabled by default.
|
Specifies if the displayed license must be accept explicit or not. This can be done either by a checkbox or by radiobuttons. By default the "next button" is disabled and will only be enabled if the checkbox is enabled or the right radio button is selected. If off is specified the "next button" is enabled by default.
|
||||||
|
|
||||||
\S2{alicensetext} LicenseText
|
\S2{alicensetext} LicenseText
|
||||||
|
|
||||||
\c [[/LANG=lang_id] text [button_text]]
|
\c [text [button_text]]
|
||||||
|
|
||||||
Specifies a string that is above the license text. Omit this to not have a license displayed. If button_text is specified, it will override the default button text of "I Agree".
|
Specifies a string that is above the license text. Omit this to not have a license displayed. If button_text is specified, it will override the default button text of "I Agree".
|
||||||
|
|
||||||
\S2{amiscbuttontext} MiscButtonText
|
\S2{amiscbuttontext} MiscButtonText
|
||||||
|
|
||||||
\c [[/LANG=lang_id] back button text [next button text] [cancel button text] [close button text]]
|
\c [back button text [next button text] [cancel button text] [close button text]]
|
||||||
|
|
||||||
Replaces the default text strings for the four buttons (< Back, Next >, Cancel and Close). If parameters are omitted, the defaults are used.
|
Replaces the default text strings for the four buttons (< Back, Next >, Cancel and Close). If parameters are omitted, the defaults are used.
|
||||||
|
|
||||||
\S2{aname} Name
|
\S2{aname} Name
|
||||||
|
|
||||||
\c [/LANG=lang_id] name
|
\c name
|
||||||
|
|
||||||
Sets the name of the installer. The name is usually simply the product name such as 'MyApp' or 'CrapSoft MyApp'.
|
Sets the name of the installer. The name is usually simply the product name such as 'MyApp' or 'CrapSoft MyApp'.
|
||||||
|
|
||||||
|
@ -231,25 +237,25 @@ Specifies whether or not the uninstaller should be silent. If it is 'silent' or
|
||||||
|
|
||||||
\S2{aspacetexts} SpaceTexts
|
\S2{aspacetexts} SpaceTexts
|
||||||
|
|
||||||
\c [[/LANG=lang_id] req text [avail text]]
|
\c [req text [avail text]]
|
||||||
|
|
||||||
If parameters are specified, overrides the space required and space available text ("Space required: " and "Space available: " by default). If 'none' is specified as the required text no space texts will be shown.
|
If parameters are specified, overrides the space required and space available text ("Space required: " and "Space available: " by default). If 'none' is specified as the required text no space texts will be shown.
|
||||||
|
|
||||||
\S2{asubcaption} SubCaption
|
\S2{asubcaption} SubCaption
|
||||||
|
|
||||||
\c [[/LANG=lang_id] page_number subcaption]
|
\c [page_number subcaption]
|
||||||
|
|
||||||
Overrides the subcaptions for each of the installer pages (0=": License Agreement",1=": Installation Options",2=": Installation Directory", 3=": Installing Files", 4=": Completed"). If you specify an empty string (""), the default will be used (you can however specify " " to achieve a blank string)
|
Overrides the subcaptions for each of the installer pages (0=": License Agreement",1=": Installation Options",2=": Installation Directory", 3=": Installing Files", 4=": Completed"). If you specify an empty string (""), the default will be used (you can however specify " " to achieve a blank string)
|
||||||
|
|
||||||
\S2{auninstallbuttontext} UninstallButtonText
|
\S2{auninstallbuttontext} UninstallButtonText
|
||||||
|
|
||||||
\c [/LANG=lang_id] button text
|
\c button text
|
||||||
|
|
||||||
Changes the text of the button that by default says "Uninstall" in the uninstaller. If no parameter is specified, the default text is used. See also \R{WriteUninstaller}{WriteUninstaller} (replaces UninstallEXEName).
|
Changes the text of the button that by default says "Uninstall" in the uninstaller. If no parameter is specified, the default text is used. See also \R{WriteUninstaller}{WriteUninstaller} (replaces UninstallEXEName).
|
||||||
|
|
||||||
\S2{auninstallcaption} UninstallCaption
|
\S2{auninstallcaption} UninstallCaption
|
||||||
|
|
||||||
\c [/LANG=lang_id] caption
|
\c caption
|
||||||
|
|
||||||
Sets what the titlebars of the uninstaller will display. By default, it is 'Name Uninstall', where Name is specified with the Name command. You can, however, override it with 'MyApp uninstaller' or whatever. If you specify an empty string (""), the default will be used (you can however specify " " to achieve a blank string)
|
Sets what the titlebars of the uninstaller will display. By default, it is 'Name Uninstall', where Name is specified with the Name command. You can, however, override it with 'MyApp uninstaller' or whatever. If you specify an empty string (""), the default will be used (you can however specify " " to achieve a blank string)
|
||||||
|
|
||||||
|
@ -261,13 +267,13 @@ Sets the icon of the uninstaller. This icon file \e{must} have the exact same st
|
||||||
|
|
||||||
\S2{auninstallsubcaption} UninstallSubCaption
|
\S2{auninstallsubcaption} UninstallSubCaption
|
||||||
|
|
||||||
\c [/LANG=lang_id] page_number subcaption
|
\c page_number subcaption
|
||||||
|
|
||||||
Overrides the subcaptions for each of the uninstaller pages (0=": Confirmation",1=": Uninstalling Files",2=": Completed"). If you specify an empty string (""), the default will be used (you can however specify " " to achieve a blank string)
|
Overrides the subcaptions for each of the uninstaller pages (0=": Confirmation",1=": Uninstalling Files",2=": Completed"). If you specify an empty string (""), the default will be used (you can however specify " " to achieve a blank string)
|
||||||
|
|
||||||
\S2{auninstalltext} UninstallText
|
\S2{auninstalltext} UninstallText
|
||||||
|
|
||||||
\c [/LANG=lang_id] text [subtext]
|
\c text [subtext]
|
||||||
|
|
||||||
Specifies the text on the first page of the uninstaller. If subtext is specified and not empty, it will replace the default secondary text on that page, "Uninstall from:".
|
Specifies the text on the first page of the uninstaller. If subtext is specified and not empty, it will replace the default secondary text on that page, "Uninstall from:".
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,8 @@ Example:
|
||||||
\c GetDlgItem $R0 $HWNDPARENT 1028
|
\c GetDlgItem $R0 $HWNDPARENT 1028
|
||||||
\c CreateFont $R1 "Tahoma" 10 700
|
\c CreateFont $R1 "Tahoma" 10 700
|
||||||
\c SendMessage $R0 ${WM_SETFONT} $R1 0
|
\c SendMessage $R0 ${WM_SETFONT} $R1 0
|
||||||
\c SetBkColor $R0 0x00FFFFFF
|
\c # set background color to white and text color to red
|
||||||
|
\c SetCtlColors $R0 FFFFFF FF0000
|
||||||
\c FunctionEnd
|
\c FunctionEnd
|
||||||
|
|
||||||
\S3{oninit} .onInit
|
\S3{oninit} .onInit
|
||||||
|
|
|
@ -69,6 +69,12 @@ Checks for existence of file(s) file_to_check_for (which can be a wildcard, or a
|
||||||
|
|
||||||
Checks the reboot flag, and jumps to jump_if_set if the reboot flag is set, otherwise jumps to jump_if_not_set. The reboot flag can be set by Delete and Rename, or manually with SetRebootFlag.
|
Checks the reboot flag, and jumps to jump_if_set if the reboot flag is set, otherwise jumps to jump_if_not_set. The reboot flag can be set by Delete and Rename, or manually with SetRebootFlag.
|
||||||
|
|
||||||
|
\S2{ifsilent} IfSilent
|
||||||
|
|
||||||
|
\c [jump_if_silent] [jump_if_not]
|
||||||
|
|
||||||
|
Checks the silent flag, and jumps to jump_if_silent if the installer is silent, otherwise jumps to jump_if_not. The silent flag can be set by \R{asilentinstall}{SilentInstall}, \R{asilentuninstall}{SilentUninstall}, \R{setsilent}{SetSilent} and by the user passing /S on the command line.
|
||||||
|
|
||||||
\S2{intcmp} IntCmp
|
\S2{intcmp} IntCmp
|
||||||
|
|
||||||
\c val1 val2 jump_if_equal [jump_if_val1_less] [jump_if_val1_more]
|
\c val1 val2 jump_if_equal [jump_if_val1_less] [jump_if_val1_more]
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
|
|
||||||
\b User variables ($VARNAME) that can be declared with the \R{var}{Var} command
|
\b User variables ($VARNAME) that can be declared with the \R{var}{Var} command
|
||||||
|
|
||||||
|
\b Added \R{pageex}{PageEx}, \R{pagecallbacks}{PageCallbacks} and \R{adirvar}{DirVar} - it's now a lot easier to add the same page type twice
|
||||||
|
|
||||||
|
\b Extraction progress
|
||||||
|
|
||||||
\b \W{../Contrib/Modern UI/Readme.html}{Modern UI 1.65}: Easier page macro system, language specific fonts, \R{alicenseforceselection}{LicenseForceSelection} support, new options for Finish page / language selection dialog, fixes, more
|
\b \W{../Contrib/Modern UI/Readme.html}{Modern UI 1.65}: Easier page macro system, language specific fonts, \R{alicenseforceselection}{LicenseForceSelection} support, new options for Finish page / language selection dialog, fixes, more
|
||||||
|
|
||||||
\b Added \R{asetallowskipfiles}{AllowSkipFiles}: Set whether the user should be able to skip a file when overwriting failed
|
\b Added \R{asetallowskipfiles}{AllowSkipFiles}: Set whether the user should be able to skip a file when overwriting failed
|
||||||
|
@ -15,7 +19,19 @@
|
||||||
|
|
||||||
\b \W{../Contrib/Makensisw/Readme.txt}{MakeNSISW 2.0}: UI to define symbols, toolbar, more
|
\b \W{../Contrib/Makensisw/Readme.txt}{MakeNSISW 2.0}: UI to define symbols, toolbar, more
|
||||||
|
|
||||||
\b NLF language files (v5): More strings translatable (K/M/G Byte, registering, unregistering), language specific fonts
|
\b NLF language files (v6): language specific fonts, RTL and more strings
|
||||||
|
|
||||||
|
\b Full \R{rtl}{RTL} support (set in language file)
|
||||||
|
|
||||||
|
\b Inner LangStrings can be used in the script
|
||||||
|
|
||||||
|
\b No more /LANG, only LangStrings - easier to set one string to all languages
|
||||||
|
|
||||||
|
\b LangStrings are no longer installer/uninstaller specific (no un.)
|
||||||
|
|
||||||
|
\b No more unprocessed strings, variables can be used everywhere
|
||||||
|
|
||||||
|
\b Added \R{ifsilent}{IfSilent} and \R{setsilent}{SetSilent} to allow better /S interaction
|
||||||
|
|
||||||
\b /o Switch for \R{ssection}{Section} provides ability to unselect the section by default
|
\b /o Switch for \R{ssection}{Section} provides ability to unselect the section by default
|
||||||
|
|
||||||
|
@ -23,6 +39,10 @@
|
||||||
|
|
||||||
\b Added \R{ssectionsetsize}{SectionSetSize}, \R{ssectiongetsize}{SectionGetSize}, \R{ssetcurinsttype}{SetCurInstType}, \R{sgetcurinsttype}{GetCurInstType}
|
\b Added \R{ssectionsetsize}{SectionSetSize}, \R{ssectiongetsize}{SectionGetSize}, \R{ssetcurinsttype}{SetCurInstType}, \R{sgetcurinsttype}{GetCurInstType}
|
||||||
|
|
||||||
|
\b New parameter for DirText to set the browse dialog text
|
||||||
|
|
||||||
|
\b Better ClearType support
|
||||||
|
|
||||||
\b System Plug-in: Fixed a bug with calling proc(void) and added e switch to get GetLastError return value
|
\b System Plug-in: Fixed a bug with calling proc(void) and added e switch to get GetLastError return value
|
||||||
|
|
||||||
\b Components Tree: Fixed problems with sub-sections with RO sections as children, SF_EXPAND now refreshes the components tree, Added SF_PSELECTED for partially selected sub-sections
|
\b Components Tree: Fixed problems with sub-sections with RO sections as children, SF_EXPAND now refreshes the components tree, Added SF_PSELECTED for partially selected sub-sections
|
||||||
|
@ -37,7 +57,7 @@
|
||||||
|
|
||||||
\b Added \R{rmdir}{RMDir /REBOOTOK}: Remove folders on reboot
|
\b Added \R{rmdir}{RMDir /REBOOTOK}: Remove folders on reboot
|
||||||
|
|
||||||
\b Added \R{setbkcolor}{SetBkColor}: Background colors can be set for non-static controls, transparent background support
|
\b Added \R{setctlcolors}{SetCtlColors}: Sets background and text color for every dialog control
|
||||||
|
|
||||||
\b \R{ainsttype}{InstType} /NOCUSTOM and /COMPONENTSONLYONCUSTOM work together
|
\b \R{ainsttype}{InstType} /NOCUSTOM and /COMPONENTSONLYONCUSTOM work together
|
||||||
|
|
||||||
|
@ -47,9 +67,9 @@
|
||||||
|
|
||||||
\b Fixed a problem regarding borders in Plug-ins BgImage and InstallOptions
|
\b Fixed a problem regarding borders in Plug-ins BgImage and InstallOptions
|
||||||
|
|
||||||
\b Fixed plug-ins directory init function generation
|
\b Minor bug fixes
|
||||||
|
|
||||||
\b Fixed overlapping chars in directory input
|
\b Code clean-ups and some more comments
|
||||||
|
|
||||||
\\<b\\>Notes:\\</b\\>
|
\\<b\\>Notes:\\</b\\>
|
||||||
|
|
||||||
|
|
|
@ -6,19 +6,17 @@
|
||||||
|
|
||||||
Loads a language file for the construction of a language table. All of the language files that come with NSIS are in \W{../Contrib/Language files}{Contrib\\Language Files}
|
Loads a language file for the construction of a language table. All of the language files that come with NSIS are in \W{../Contrib/Language files}{Contrib\\Language Files}
|
||||||
|
|
||||||
For ease of use LoadLanguageFile defines $\{LANG_language_file\} as the language id. Use it with /LANG, LangString, LangStringUP, and LangDLL.
|
For ease of use LoadLanguageFile defines $\{LANG_language_file\} as the language id. Use it with \R{langstring}{LangString}, LangDLL and \R{viaddversionkey}{VIAddVersionKey}.
|
||||||
|
|
||||||
\S2{langstring} LangString and LangStringUP
|
\S2{langstring} LangString
|
||||||
|
|
||||||
\c [un.]name language_id string
|
\c name language_id string
|
||||||
|
|
||||||
Defines a multilingual string and spares the comparing of $LANGUAGE to every language you have in your installer for every string you use. This also allows you to make section names and install types multilingual. To use in the uninstaller make sure you name the string with the un. prefix before.
|
Defines a multilingual string. This means the its value will be different (or not, it's up to you) for every language. It allows you to easily make your installer multilingual without the need to add massive swithces to the script.
|
||||||
|
|
||||||
LangStrings can you only be used on their own. You can't include them in other strings. "look at my $(string)! isn't it beautiful?" will be seen exactly as written, $(string) will not be expanded. If you want to use LangStrings in other strings you can first copy the LangString to a variable and then use the variable wherever you want. This is a temporary situation, it will be changed before NSIS 2 final.
|
Each LangString has a name that identifies it and a value for each language used by the installer. To use a LangString you must know its name. LangStrings can be used in any runtime string in the script. To use a LangString all you need to add to the string is $(LangString_name_here) where you want the LangString to be inserted.
|
||||||
|
|
||||||
\\<b\\>Note #1:\\</b\\> Unlike defines that use curly braces - \{\}, multilingual strings use parenthesis - ().
|
\\<b\\>Note:\\</b\\> Unlike defines that use curly braces - \{\}, multilingual strings use parenthesis - ().
|
||||||
|
|
||||||
\\<b\\>Note #2:\\</b\\> If you see weird characters between letters in the string when you use LangString, use LangStringUP (LangString for unprocessed string such as InstType)
|
|
||||||
|
|
||||||
For example, instead of:
|
For example, instead of:
|
||||||
|
|
||||||
|
@ -35,53 +33,42 @@ Use:
|
||||||
\c LangString message ${LANG_FRENCH} "French message"
|
\c LangString message ${LANG_FRENCH} "French message"
|
||||||
\c LangString message ${LANG_KOREAN} "Korean message"
|
\c LangString message ${LANG_KOREAN} "Korean message"
|
||||||
\c
|
\c
|
||||||
\c MessageBox MB_OK $(message)
|
\c MessageBox MB_OK "A translated message: $(message)"
|
||||||
|
|
||||||
|
\S2{licenselangstring} LicenseLangString
|
||||||
|
|
||||||
|
\c name lang_id license_path
|
||||||
|
|
||||||
|
Does the same as \R{langstring}{LangString} only it loads the string from a text/RTF file and defines a special LangString that can be used only by \R{alicensedata}{LicenseData}.
|
||||||
|
|
||||||
\S0{langs} Multiple Languages
|
\S0{langs} Multiple Languages
|
||||||
|
|
||||||
As of version 2 NSIS fully supports multiple languages. An installer can have more than one language. Each string in the installer can be easily translated, and so can script strings such as messages in a message box.
|
As of version 2 NSIS fully supports multiple languages. An installer can have more than one language. Each string in the installer can be easily translated using \R{langstring}{LangStrings}.
|
||||||
|
|
||||||
Each installer has one or more language table which holds references to strings in the strings table. To create a language table all you need to do is use \R{loadlanguagefile}{LoadLanguageFile}, define strings used in your installer for that language such as Name and Caption, message box, install type, and other strings using \R{langstring}{LangString} or \R{langstring}{LangStringUP} and you have built your installer a language table.
|
Each installer has one or more language tables which hold references to strings in the strings table. To create a language table all you need to do is use that language. Either use \R{loadlanguagefile}{LoadLanguageFile} or define a \R{langstring}{LangString} and you have built your installer a language table. To make sure all of the inner strings NSIS uses are there you should load a language file using use \R{loadlanguagefile}{LoadLanguageFile}. The strings from the language file will be used as defaults in case you don't define some strings in the script. The language file strings can be used by the script too, not just internally by NSIS. Each string in the language file is assigned to a specific LangString. That LangString's name is listed as a comment just above the string in the English language file for your convenience. The language file is located in \W{../Contrib/Language files}{Contrib\\Language Files}.
|
||||||
|
|
||||||
For an example of usage see \W{../Examples/languages.nsi}{languages.nsi}.
|
For an example of usage see \W{../Examples/languages.nsi}{languages.nsi}.
|
||||||
|
|
||||||
\S1{langselection} Language Selection
|
\S1{langselection} Language Selection
|
||||||
|
|
||||||
When the installer starts up it goes through these stages to select the interface language:
|
When the installer starts up it goes through these steps to select the interface language:
|
||||||
|
|
||||||
\n Find a perfect match between the user default language (GetUserDefaultLangID())
|
\n Get user's default language (GetUserDefaultLangID()) into \R{varconstant}{$LANGUAGE}
|
||||||
|
|
||||||
|
\n Find a perfect match for the language id in \R{varconstant}{$LANGUAGE}
|
||||||
|
|
||||||
\n If there is no perfect match, find a primary language match
|
\n If there is no perfect match, find a primary language match
|
||||||
|
|
||||||
\n If no match, take the first language defined in the script
|
\n If there is no no match, use the first language defined in the script
|
||||||
|
|
||||||
\n If \R{varconstant}{$LANGUAGE} has changed during .onInit, go through steps 1 to 3 with the language inside $LANGUAGE instead of the default user language.
|
\n If \R{varconstant}{$LANGUAGE} has changed during .onInit, go through steps 2 to 4 again
|
||||||
|
|
||||||
\S1{/lang} The /LANG Parameter
|
|
||||||
|
|
||||||
All of the installer (and uninstaller) attributes setting commands have an optional parameter /LANG. This parameter tells the script compiler in which language table to put the specified string.
|
|
||||||
|
|
||||||
For example:
|
|
||||||
|
|
||||||
\c Caption /LANG=${LANG_ENGLISH} "English caption"
|
|
||||||
\c Caption /LANG=${LANG_FRENCH} "French caption"
|
|
||||||
\c Caption /LANG=${LANG_DUTCH} "Dutch caption"
|
|
||||||
|
|
||||||
When the installer will select the English language the caption will be "English caption", when it selects French the caption will be "French caption" and when it selects Dutch the caption will be "Dutch caption".
|
|
||||||
|
|
||||||
If no /LANG parameter is specified, the compiler will assume the last used language, or the last loaded language.
|
|
||||||
|
|
||||||
\c LoadLanguageFile "${NSISDIR}\Language files\English.nlf"
|
|
||||||
\c Name "English name"
|
|
||||||
\c LoadLanguageFile "${NSISDIR}\Language files\German.nlf"
|
|
||||||
\c Name "German name"
|
|
||||||
\c Caption "German caption"
|
|
||||||
\c Caption /LANG=${LANG_ENGLISH} "English caption"
|
|
||||||
\c ComponentText "English components text"
|
|
||||||
\c ComponentText /LANG=${LANG_GERMAN} "German components text"
|
|
||||||
|
|
||||||
\S1{langdll} LangDLL Plug-in
|
\S1{langdll} LangDLL Plug-in
|
||||||
|
|
||||||
The LangDLL plug-in lets you give the user the option to choose the language of the installer. Just push the language id ($\{LANG_*\}) and its name for every language in your installer, then the number of languages pushed, the caption, and the text that tells the user to select the language, call the plug-in function named LangDialog, pop the returned value into $LANGUAGE and you're good to go. If the user click on the cancel button the return value will be "cancel".
|
The LangDLL plug-in allows you to give the user an option to choose the language of the installer. Just push the language id ($\{LANG_*\}) and its name for every language in your installer, then the number of languages pushed, the caption, and the text that tells the user to select the language, call the plug-in function named LangDialog, pop the returned value into $LANGUAGE and you're good to go. If the user clicks on the cancel button the return value will be "cancel".
|
||||||
|
|
||||||
For an example of usage see \W{../Examples/languages.nsi}{languages.nsi}.
|
For an example of usage see \W{../Examples/languages.nsi}{languages.nsi}.
|
||||||
|
|
||||||
|
\S1{rtl} RTL Languages
|
||||||
|
|
||||||
|
RTL languages are languages that are written from right to left. NSIS fully supports RTL languages. In the language file there is a place to specify if the language is RTL or not. If it is, NSIS will create another set of dialogs for the language that will be RTL. To find out on runtime if the language you're currently using is RTL or not check the value of the $(^RTL) language string. It will be 1 if the language is RTL and 0 otherwise.
|
|
@ -2,30 +2,74 @@
|
||||||
|
|
||||||
Each (non-silent) NSIS installer has a set of pages. Each page can be a NSIS built-in page or a custom page created by a user's function (with \W{../Contrib/InstallOptions/Readme.html}{InstallOptions} for example).
|
Each (non-silent) NSIS installer has a set of pages. Each page can be a NSIS built-in page or a custom page created by a user's function (with \W{../Contrib/InstallOptions/Readme.html}{InstallOptions} for example).
|
||||||
|
|
||||||
|
Using the script you can control the pages' order, appearance, and behavior. You can skip pages, paint them white, force the user to stay in a certain page until a certain condition is met, show a readme page, show custom designed pages for input and more. In this section, you will learn how to control all of the above.
|
||||||
|
|
||||||
|
There are two basic commands regarding pages, \R{page}{Page} and \R{uninstpage}{UninstPage}. The first adds a page to the installer, the second adds a page to the uninstaller. On top of those two there is the \R{pageex}{PageEx} command which allows you to add a page to either one and with greater amount of options. \R{pageex}{PageEx} allows you to set options to the specific page you are adding instead of using the default that's set outside of \R{pageex}{PageEx}.
|
||||||
|
|
||||||
\S{pageoreder} Ordering
|
\S{pageoreder} Ordering
|
||||||
|
|
||||||
The page order is set simply by the order they are in the script. For example:
|
The page order is set simply by the order \R{page}{Page}, \R{uninstpage}{UninstPage} and \R{pageex}{PageEx} appear in the script. For example:
|
||||||
|
|
||||||
\c Page license
|
\c Page license
|
||||||
\c Page components
|
\c Page components
|
||||||
\c Page directory
|
\c Page directory
|
||||||
\c Page instfiles
|
\c Page instfiles
|
||||||
|
\c UninstPage uninstConfirm
|
||||||
|
\c UninstPage isntfiles
|
||||||
|
|
||||||
This code will show the license page, then the components selection page, then the directory selection page and then the install log, just like in old installers.
|
This code will tell NSIS to first show the license page, then the components selection page, then the directory selection page and finally the install log where sections are executed, just like in old installers. The uninstaller will first show the uninstall confirmation page and then the uninstallation log.
|
||||||
|
|
||||||
You can specify the same page type more than once, just make sure you know what you are doing.
|
You can specify the same page type more than once.
|
||||||
|
|
||||||
Please note that you must still use \R{alicensetext}{LicenseText} and \R{alicensedata}{LicenseData} for the license page to show, \R{acomponenttext}{ComponentText} for the components selection page to show and \R{adirtext}{DirText} for the directory page to show.
|
If you don't use any page command the installer's pages order will be just as in older versions: license (if \R{alicensetext}{LicenseText} and \R{alicensedata}{LicenseData} were specified), components (if \R{acomponenttext}{ComponentText} was specified and there is more than one visible section), directory (if \R{adirtext}{DirText} was specified) and instfiles. The uninstaller's pages order will be: uninstall confirmation page (if \R{auninstalltext}{UninstallText} was specified) and instfiles.
|
||||||
|
|
||||||
If you don't use any Page command the installer pages order will be just as in older version: license (if \R{alicensetext}{LicenseText} and \R{alicensedata}{LicenseData} were specified), components (if \R{acomponenttext}{ComponentText} was specified and there is more than one visible section), directory (if \R{adirtext}{DirText} was specified), instfiles.
|
\S{pageoptions} Page Options
|
||||||
|
|
||||||
\S{pagecallbacks} Callbacks
|
Each page has its unique set of data that defines how it will look and act. This section describes what data each type of page uses and how you can set it. \R{pagecallbacks_explain}{Callback functions} are described below and are not dealt with in this section.
|
||||||
|
|
||||||
Each built-in page has three callback functions. The pre-function, the show-creation function and the leave-function. The pre-function is called right before the page is created, the show-function is called right after it is created and before it is shown so you can tweak its user interface with \R{createfont}{CreateFont}, \R{setbkcolor}{SetBkColor } and \R{sendmessage}{SendMessage}; the leave-function is called right after the user has pressed the next button and before the page is left.
|
The list below lists what commands affect the certain page type. Unless mentioned otherwise, these commands can be used both in and out of a \R{pageex}{PageEx} block. If used inside a \R{pageex}{PageEx} block they will only affect the current page being set by \R{pageex}{PageEx}, else they will set the default for every other page.
|
||||||
|
|
||||||
A custom page has only two callback functions, one that creates it which is mandatory, and one leave-function that acts just like the leave-function for built-in pages.
|
\e{License page}
|
||||||
|
|
||||||
Use \R{abort}{Abort} from a built-in page's pre-function to skip the page, and from a built-in page's leave-function to stay in the page.
|
\b \R{alicensetext}{LicenseText}
|
||||||
|
|
||||||
|
\b \R{alicensedata}{LicenseData}
|
||||||
|
|
||||||
|
\b \R{alicenseforceselection}{LicenseForceSelection}
|
||||||
|
|
||||||
|
\e{Components selection page}
|
||||||
|
|
||||||
|
\b \R{acomponenttext}{ComponentText}
|
||||||
|
|
||||||
|
\e{Directory selection page}
|
||||||
|
|
||||||
|
\b \R{adirtext}{DirText}
|
||||||
|
|
||||||
|
\b \R{adirvar}{DirVar} - can only be used in \R{pageex}{PageEx}
|
||||||
|
|
||||||
|
\e{Un/Installation log page}
|
||||||
|
|
||||||
|
\b \R{adetailsbuttontext}{DetailsButtonText}
|
||||||
|
|
||||||
|
\b \R{acompletedtext}{CompletedText}
|
||||||
|
|
||||||
|
\e{Uninstall confirmation page}
|
||||||
|
|
||||||
|
\b \R{adirvar}{DirVar} - can only be used in \R{pageex}{PageEx}
|
||||||
|
|
||||||
|
\b \R{auninstalltext}{UninstallText}
|
||||||
|
|
||||||
|
\S{pagecallbacks_explain} Callbacks
|
||||||
|
|
||||||
|
Each built-in page has three callback functions. The pre-function, the show-creation function and the leave-function. The pre-function is called right before the page is created, the show-function is called right after it is created and before it is shown and the leave-function is called right after the user has pressed the next button and before the page is left.
|
||||||
|
|
||||||
|
\b The pre-function allows you to skip the page using \R{abort}{Abort}.
|
||||||
|
|
||||||
|
\b The show-function allows you to tweak the page's user interface with \R{createfont}{CreateFont}, \R{setctlcolors}{SetCtlColors}, \R{sendmessage}{SendMessage} and others.
|
||||||
|
|
||||||
|
\b The leave-function allows you to force the user to stay on the current page using \R{abort}{Abort}.
|
||||||
|
|
||||||
|
A custom page only has two callback functions, one that creates it which is mandatory, and one leave-function that acts just like the leave-function for built-in pages.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
|
@ -59,12 +103,44 @@ Examples:
|
||||||
|
|
||||||
\S{page} Page
|
\S{page} Page
|
||||||
|
|
||||||
\c ((custom [creator_function] [leave_function] [caption]) | ((license|components|directory|instfiles) [pre_function] [show_function] [leave_function])) [define_if_last]
|
\c custom [creator_function] [leave_function] [caption]
|
||||||
|
\c OR
|
||||||
|
\c (license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function]
|
||||||
|
|
||||||
Adds an installer page. See the above sections for more information about built-in versus custom pages and about callback functions. If define_if_last is specified, the parameter will be !defined if the page turns out to be the last page before a instfiles page. This helps you decide on dynamic scripts (such as the \W{../contrib/Modern UI/Readme.html}{Modern UI script}) what to put in this page's text, "click the install button to start installation" or "click next to continue" for example.
|
Adds an installer page. See the above sections for more information about built-in versus custom pages and about callback functions.
|
||||||
|
|
||||||
\S{uninstpage} UninstPage
|
\S{uninstpage} UninstPage
|
||||||
|
|
||||||
\c ((custom [creator_function] [leave_function] [caption]) | ((uninstConfirm|instfiles) [pre_function] [show_function] [leave_function])) [define_if_last]
|
\c custom [creator_function] [leave_function] [caption]
|
||||||
|
\c OR
|
||||||
|
\c (license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function]
|
||||||
|
|
||||||
Adds an uninstaller page. See the above sections for more information about built-in versus custom pages and about callback functions. See Page for an explanation about define_if_last.
|
Adds an uninstaller page. See the above sections for more information about built-in versus custom pages and about callback functions.
|
||||||
|
|
||||||
|
\S{pageex} PageEx
|
||||||
|
|
||||||
|
\c [un.](custom|uninstConfirm|license|components|directory|instfiles)
|
||||||
|
|
||||||
|
Adds an installer page or an uninstaller page if the un. prefix was used. Every PageEx must have a matching \R{pageexend}{PageExEnd}. In a PageEx block you can set options that are specific to this page and will not be used for other pages. Options that are not set will revert to what was set outside the PageEx block or the default if nothing was set. To set the callback functions for a page set with PageEx use \R{pagecallbacks}{PageCallbacks}. See the above sections for more information about built-in versus custom pages.
|
||||||
|
|
||||||
|
Example usage:
|
||||||
|
|
||||||
|
\c PageEx license
|
||||||
|
\c LicenseText "Readme"
|
||||||
|
\c LicenseData readme.rtf
|
||||||
|
\c PageExEnd
|
||||||
|
\c
|
||||||
|
\c PageEx license
|
||||||
|
\c LicenseData license.txt
|
||||||
|
\c LicenseForceSelection checkbox
|
||||||
|
\c PageExEnd
|
||||||
|
|
||||||
|
\S{pageexend} PageExEnd
|
||||||
|
|
||||||
|
Ends a PageEx block.
|
||||||
|
|
||||||
|
\S{pagecallbacks} PageCallbacks
|
||||||
|
|
||||||
|
\c ([creator_function] [leave_function]) | ([pre_function] [show_function] [leave_function])
|
||||||
|
|
||||||
|
Sets the callback functions for a page defined using \R{pageex}{PageEx}. Can only be used inside a \R{pageex}{PageEx} block. See the above sections for more information about callback functions.
|
|
@ -27,16 +27,27 @@ The default extension for a script file is .nsi. Header files have the .nsh exte
|
||||||
|
|
||||||
\H{tutstructure} Scripting structure
|
\H{tutstructure} Scripting structure
|
||||||
|
|
||||||
A NSIS script can contain Installer Attributes and Sections/Functions. You can also use Compiler Commands for compile-time operations. The minimum is \R{aoutfile}{OutFile}, which tells NSIS where to write the installer, and one section.
|
A NSIS script can contain Installer Attributes and Sections/Functions. You can also use Compiler Commands for compile-time operations. Required is the \R{aoutfile}{OutFile} instruction, which tells NSIS where to write the installer, and one section.
|
||||||
|
|
||||||
\S1{installerattributes} Installer Attributes
|
\S1{installerattributes} Installer Attributes
|
||||||
|
|
||||||
Installer Attributes determine the behavior and the look and feel of your installer. With these attributes you can define what pages are shown in which order, texts that will be shown during the installation, the number of installation types etc. Most of these commands can only be set and are not changeable during runtime.
|
Installer Attributes determine the behavior and the look and feel of your installer. With these attributes you can change texts that will be shown during the installation, the number of installation types etc. Most of these commands can only be set and are not changeable during runtime.
|
||||||
|
|
||||||
The most basic attributes are \R{aname}{Name}, \R{ainstalldir}{InstallDir} and \R{adirtext}{DirText}.
|
Other basic instructions are \R{aname}{Name} and \R{ainstalldir}{InstallDir}.
|
||||||
|
|
||||||
For more information about installer attributes, have a look at \R{instattribs}{Installer Attributes}.
|
For more information about installer attributes, have a look at \R{instattribs}{Installer Attributes}.
|
||||||
|
|
||||||
|
\S1{tut-pages} Pages
|
||||||
|
|
||||||
|
An non-silent installer has a set of wizard pages to let the user configure the installer. You can set which pages to display using the \R{page}{Page} command (or \R{pageex}{PageEx} for more advanced settings). A typical set of pages looks like this:
|
||||||
|
|
||||||
|
\c Page license
|
||||||
|
\c Page components
|
||||||
|
\c Page directory
|
||||||
|
\c Page instfiles
|
||||||
|
\c UninstPage uninstConfirm
|
||||||
|
\c UninstPage isntfiles
|
||||||
|
|
||||||
\S1{tut-sections} Sections
|
\S1{tut-sections} Sections
|
||||||
|
|
||||||
In a common installer there are several things the user can install. For example in the NSIS distribution installer you can choose to install the source code, additional plug-ins, examples and more. Each of these components has its own piece of code. If the user selects to install this component, then the installer will execute that code. In the script, that code is in sections. Each visible section is a component for the user to choose from. We will not discuss invisible sections in this tutorial. It is possible to build your installer with only one section, but if you want to use the components page and let the user choose what to install you'll have to use more than one section.
|
In a common installer there are several things the user can install. For example in the NSIS distribution installer you can choose to install the source code, additional plug-ins, examples and more. Each of these components has its own piece of code. If the user selects to install this component, then the installer will execute that code. In the script, that code is in sections. Each visible section is a component for the user to choose from. We will not discuss invisible sections in this tutorial. It is possible to build your installer with only one section, but if you want to use the components page and let the user choose what to install you'll have to use more than one section.
|
||||||
|
@ -119,7 +130,7 @@ After calling the function, the variables contain the same value as before. Note
|
||||||
|
|
||||||
\S2{tutdebug} Debugging Scripts
|
\S2{tutdebug} Debugging Scripts
|
||||||
|
|
||||||
The more you work with NSIS the more complex the scripts will become. This will increase the potential of mistakes, especially when dealing with lots of variables. There are a few possibilities to help you debuging the code. To display the contents of variables you should use \R{messagebox}{MessageBoxes} or \R{detailprint}{DetailPrint}. To get a brief overview about all variables you should use the plugin \W{http://nsis.sourceforge.net/archive/viewpage.php?pageid=140}{Dumpstate}. By default all actions of the Installer are printed out in the Log Window. You can access the log if you right-click in the Log Window and select "Copy Details To Clipboard". There is also a way to write it directly to a file. See \R{dumplogtofile}{here}. Very useful if you force to close the installer automatically using \R{setautoclose}{SetAutoClose}.
|
The more you work with NSIS the more complex the scripts will become. This will increase the potential of mistakes, especially when dealing with lots of variables. There are a few possibilities to help you debuging the code. To display the contents of variables you should use \R{messagebox}{MessageBoxes} or \R{detailprint}{DetailPrint}. To get a brief overview about all variables you should use the plugin \W{http://nsis.sourceforge.net/archive/viewpage.php?pageid=140}{Dumpstate}. By default all actions of the Installer are printed out in the Log Window. You can access the log if you right-click in the Log Window and select "Copy Details To Clipboard". There is also a way to write it directly to a file, see \R{dumplogtofile}{here}.
|
||||||
|
|
||||||
|
|
||||||
\S1{compilercommands} Compiler Commands
|
\S1{compilercommands} Compiler Commands
|
||||||
|
|
|
@ -86,11 +86,19 @@ Shows or hides the details, depending on which parameter you pass. Overrides the
|
||||||
|
|
||||||
Sets mode at which commands print their status. None has commands be quiet, listonly has status text only added to the listbox, textonly has status text only printed to the status bar, and both enables both (the default). For extracting many small files, textonly is recommended (especially on win9x with smooth scrolling enabled).
|
Sets mode at which commands print their status. None has commands be quiet, listonly has status text only added to the listbox, textonly has status text only printed to the status bar, and both enables both (the default). For extracting many small files, textonly is recommended (especially on win9x with smooth scrolling enabled).
|
||||||
|
|
||||||
\S2{setbkcolor} SetBkColor
|
\S2{setctlcolors} SetCtlColors
|
||||||
|
|
||||||
\c hwnd color
|
\c hwnd (branding | (text_color (transparent|bg_color)))
|
||||||
|
|
||||||
Sets a background color for a static control, edit control, button or a dialog. Use GetDlgItem to get the handle (HWND) of the control. To make the control transparent specify "transparent" as the color value. \e{Do not} use this on branding image controls!
|
Sets a background color and the text color for a static control, edit control, button or a dialog. Use GetDlgItem to get the handle (HWND) of the control. To make the control transparent specify "transparent" as the background color value. You can also specify branding instead of text color and background color to make the control completely gray. This is used by the branding text control in the MUI.
|
||||||
|
|
||||||
|
\S2{setsilent} SetSilent
|
||||||
|
|
||||||
|
\c silent | normal
|
||||||
|
|
||||||
|
Sets the installer to silent mode or normal mode. See \R{asilentinstall}{SilentInstall} for more information about silent installations. Can only be used in \R{oninit}{.onInit}.
|
||||||
|
|
||||||
|
Sets the installer
|
||||||
|
|
||||||
\S2{showwindow} ShowWindow
|
\S2{showwindow} ShowWindow
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -423,26 +423,45 @@ void CDialogTemplate::ConvertToRTL() {
|
||||||
addExStyle = true;
|
addExStyle = true;
|
||||||
// Button
|
// Button
|
||||||
else if (int(m_vItems[i]->szClass) == 0x80) {
|
else if (int(m_vItems[i]->szClass) == 0x80) {
|
||||||
if (m_vItems[i]->dwStyle & BS_LEFTTEXT) addExStyle = true;
|
m_vItems[i]->dwStyle ^= BS_LEFTTEXT;
|
||||||
|
m_vItems[i]->dwStyle ^= BS_RIGHT;
|
||||||
|
m_vItems[i]->dwStyle ^= BS_LEFT;
|
||||||
|
|
||||||
|
if ((m_vItems[i]->dwStyle & (BS_LEFT|BS_RIGHT)) == (BS_LEFT|BS_RIGHT)) {
|
||||||
|
m_vItems[i]->dwStyle ^= BS_LEFT;
|
||||||
|
m_vItems[i]->dwStyle ^= BS_RIGHT;
|
||||||
|
if (m_vItems[i]->dwStyle & (BS_RADIOBUTTON|BS_CHECKBOX|BS_USERBUTTON))
|
||||||
|
m_vItems[i]->dwStyle |= BS_RIGHT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Edit
|
// Edit
|
||||||
else if (int(m_vItems[i]->szClass) == 0x81) {
|
else if (int(m_vItems[i]->szClass) == 0x81) {
|
||||||
if (!(m_vItems[i]->dwStyle & ES_CENTER)) addExStyle = true;
|
if ((m_vItems[i]->dwStyle & ES_CENTER) == 0)
|
||||||
|
m_vItems[i]->dwStyle ^= ES_RIGHT;
|
||||||
}
|
}
|
||||||
// Static
|
// Static
|
||||||
else if (int(m_vItems[i]->szClass) == 0x82) {
|
else if (int(m_vItems[i]->szClass) == 0x82) {
|
||||||
if (!(m_vItems[i]->dwStyle & (SS_CENTER|SS_RIGHT))) {
|
if ((m_vItems[i]->dwStyle & SS_TYPEMASK) == SS_LEFT || (m_vItems[i]->dwStyle & SS_TYPEMASK) == SS_LEFTNOWORDWRAP)
|
||||||
m_vItems[i]->dwStyle &= ~SS_LEFT;
|
{
|
||||||
m_vItems[i]->dwStyle &= ~SS_LEFTNOWORDWRAP;
|
m_vItems[i]->dwStyle &= ~SS_TYPEMASK;
|
||||||
m_vItems[i]->dwStyle |= SS_RIGHT;
|
m_vItems[i]->dwStyle |= SS_RIGHT;
|
||||||
}
|
}
|
||||||
|
else if ((m_vItems[i]->dwStyle & SS_TYPEMASK) == SS_ICON) {
|
||||||
|
m_vItems[i]->dwStyle |= SS_CENTERIMAGE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!IS_INTRESOURCE(m_vItems[i]->szClass) && strcmpi(m_vItems[i]->szClass, "RichEdit20A")) {
|
||||||
|
if ((m_vItems[i]->dwStyle & ES_CENTER) == 0)
|
||||||
|
m_vItems[i]->dwStyle ^= ES_RIGHT;
|
||||||
}
|
}
|
||||||
else addExStyle = true;
|
else addExStyle = true;
|
||||||
|
|
||||||
if (addExStyle)
|
if (addExStyle)
|
||||||
m_vItems[i]->dwExtStyle |= WS_EX_RIGHT;
|
m_vItems[i]->dwExtStyle |= WS_EX_RIGHT | WS_EX_RTLREADING;
|
||||||
|
|
||||||
m_vItems[i]->sX = m_sWidth - m_vItems[i]->sWidth - m_vItems[i]->sX;
|
m_vItems[i]->sX = m_sWidth - m_vItems[i]->sWidth - m_vItems[i]->sX;
|
||||||
}
|
}
|
||||||
m_dwExtStyle |= WS_EX_RIGHT;
|
m_dwExtStyle |= WS_EX_RIGHT | WS_EX_RTLREADING;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Saves the dialog in the form of DLGTEMPLATE[EX]
|
// Saves the dialog in the form of DLGTEMPLATE[EX]
|
||||||
|
|
|
@ -49,7 +49,7 @@ struct DialogItemTemplate {
|
||||||
short sHeight;
|
short sHeight;
|
||||||
DWORD dwExtStyle;
|
DWORD dwExtStyle;
|
||||||
DWORD dwStyle;
|
DWORD dwStyle;
|
||||||
WORD wId;
|
WORD wId;
|
||||||
|
|
||||||
char *szClass;
|
char *szClass;
|
||||||
char *szTitle;
|
char *szTitle;
|
||||||
|
|
|
@ -303,7 +303,7 @@ BYTE* CResourceEditor::Save(DWORD &dwSize) {
|
||||||
oldSeeker += dwSectionsSize;
|
oldSeeker += dwSectionsSize;
|
||||||
|
|
||||||
// Copy data tacked after the PE headers and sections (NSIS installation data for example)
|
// Copy data tacked after the PE headers and sections (NSIS installation data for example)
|
||||||
DWORD dwTackedSize = oldSeeker - m_pbPE - m_iSize;
|
DWORD dwTackedSize = m_iSize - (oldSeeker - m_pbPE);
|
||||||
if (dwTackedSize)
|
if (dwTackedSize)
|
||||||
CopyMemory(seeker, oldSeeker, dwTackedSize);
|
CopyMemory(seeker, oldSeeker, dwTackedSize);
|
||||||
|
|
||||||
|
|
1752
Source/build.cpp
1752
Source/build.cpp
File diff suppressed because it is too large
Load diff
129
Source/build.h
129
Source/build.h
|
@ -1,8 +1,7 @@
|
||||||
#ifndef _BUILD_H_
|
#ifndef _BUILD_H_
|
||||||
#define _BUILD_H_
|
#define _BUILD_H_
|
||||||
|
|
||||||
#include <Vector>
|
#include <StdExcept>
|
||||||
#include <List>
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
#include "strlist.h"
|
#include "strlist.h"
|
||||||
|
@ -43,12 +42,8 @@ extern "C"
|
||||||
|
|
||||||
#define PS_OK 0
|
#define PS_OK 0
|
||||||
#define PS_EOF 1
|
#define PS_EOF 1
|
||||||
#define PS_ENDIF 2
|
|
||||||
#define PS_ELSE 3
|
|
||||||
#define PS_ELSE_IF0 4
|
|
||||||
#define PS_ELSE_IF1 5
|
|
||||||
#define PS_ERROR 50
|
#define PS_ERROR 50
|
||||||
#define IS_PS_ELSE(x) (( x ) >= PS_ELSE && ( x ) <= PS_ELSE_IF1)
|
#define PS_WARNING 100
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
MAKENSIS_NOTIFY_SCRIPT,
|
MAKENSIS_NOTIFY_SCRIPT,
|
||||||
|
@ -57,6 +52,14 @@ enum {
|
||||||
MAKENSIS_NOTIFY_OUTPUT
|
MAKENSIS_NOTIFY_OUTPUT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define PAGE_CUSTOM 0
|
||||||
|
#define PAGE_LICENSE 1
|
||||||
|
#define PAGE_COMPONENTS 2
|
||||||
|
#define PAGE_DIRECTORY 3
|
||||||
|
#define PAGE_INSTFILES 4
|
||||||
|
#define PAGE_UNINSTCONFIRM 5
|
||||||
|
#define PAGE_COMPLETED 6
|
||||||
|
|
||||||
class CEXEBuild {
|
class CEXEBuild {
|
||||||
public:
|
public:
|
||||||
CEXEBuild();
|
CEXEBuild();
|
||||||
|
@ -64,6 +67,8 @@ class CEXEBuild {
|
||||||
|
|
||||||
// to add a warning to the compiler's warning list.
|
// to add a warning to the compiler's warning list.
|
||||||
void warning(const char *s, ...);
|
void warning(const char *s, ...);
|
||||||
|
// warning with file name and line count
|
||||||
|
void warning_fl(const char *s, ...);
|
||||||
|
|
||||||
// to add a defined thing.
|
// to add a defined thing.
|
||||||
void define(const char *p, const char *v="");
|
void define(const char *p, const char *v="");
|
||||||
|
@ -125,6 +130,27 @@ class CEXEBuild {
|
||||||
int do_add_file(const char *lgss, int attrib, int recurse, int linecnt, int *total_files, const char *name_override=0, int generatecode=1, int *data_handle=0, int rec_depth=0);
|
int do_add_file(const char *lgss, int attrib, int recurse, int linecnt, int *total_files, const char *name_override=0, int generatecode=1, int *data_handle=0, int rec_depth=0);
|
||||||
GrowBuf m_linebuild; // used for concatenating lines
|
GrowBuf m_linebuild; // used for concatenating lines
|
||||||
|
|
||||||
|
// used by doParse to do preprocessing
|
||||||
|
struct ifblock
|
||||||
|
{
|
||||||
|
int hasexeced;
|
||||||
|
int elseused;
|
||||||
|
int ignore;
|
||||||
|
int inherited_ignore;
|
||||||
|
} *cur_ifblock;
|
||||||
|
|
||||||
|
TinyGrowBuf build_preprocessor_data;
|
||||||
|
int last_line_had_slash;
|
||||||
|
|
||||||
|
void start_ifblock();
|
||||||
|
void end_ifblock();
|
||||||
|
int num_ifblock();
|
||||||
|
/*int ignore;
|
||||||
|
int if_count;
|
||||||
|
int ignored_if_count;
|
||||||
|
int wait_for_endif;*/
|
||||||
|
bool inside_comment;
|
||||||
|
|
||||||
void ERROR_MSG(const char *s, ...);
|
void ERROR_MSG(const char *s, ...);
|
||||||
void SCRIPT_MSG(const char *s, ...);
|
void SCRIPT_MSG(const char *s, ...);
|
||||||
void INFO_MSG(const char *s, ...);
|
void INFO_MSG(const char *s, ...);
|
||||||
|
@ -142,21 +168,22 @@ class CEXEBuild {
|
||||||
void section_add_size_kb(int kb);
|
void section_add_size_kb(int kb);
|
||||||
int section_add_flags(int flags);
|
int section_add_flags(int flags);
|
||||||
int section_add_install_type(int inst_type);
|
int section_add_install_type(int inst_type);
|
||||||
|
int add_page(int type);
|
||||||
|
int page_end();
|
||||||
int add_label(const char *name);
|
int add_label(const char *name);
|
||||||
int add_entry(const entry *ent);
|
int add_entry(const entry *ent);
|
||||||
int add_entry_direct(int which, int o0=0, int o1=0, int o2=0, int o3=0, int o4=0, int o5=0);
|
int add_entry_indirect(int which, int o0=0, int o1=0, int o2=0, int o3=0, int o4=0, int o5=0);
|
||||||
int add_data(const char *data, int length, IGrowBuf *dblock=NULL); // returns offset
|
int add_data(const char *data, int length, IGrowBuf *dblock=NULL); // returns offset
|
||||||
int add_string(const char *string); // returns offset (in string table)
|
int add_string(const char *string, int process=1); // returns offset (in string table)
|
||||||
int add_intstring(const int i); // returns offset in stringblock
|
int add_intstring(const int i); // returns offset in stringblock
|
||||||
int add_string_main(const char *string, int process=1); // returns offset (in string table)
|
|
||||||
int add_string_uninst(const char *string, int process=1); // returns offset (in string table)
|
|
||||||
#ifdef NSIS_SUPPORT_LANG_IN_STRINGS
|
#ifdef NSIS_SUPPORT_LANG_IN_STRINGS
|
||||||
int preprocess_string(char *out, const char *in, bool bUninstall);
|
int preprocess_string(char *out, const char *in, bool bUninstall);
|
||||||
#else
|
#else
|
||||||
int preprocess_string(char *out, const char *in);
|
int preprocess_string(char *out, const char *in);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int make_sure_not_in_secorfunc(const char *str);
|
int make_sure_not_in_secorfunc(const char *str, int page_ok=0);
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT
|
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT
|
||||||
// Added by Ximon Eighteen 5th August 2002
|
// Added by Ximon Eighteen 5th August 2002
|
||||||
|
@ -171,6 +198,11 @@ class CEXEBuild {
|
||||||
void printline(int l);
|
void printline(int l);
|
||||||
int process_jump(LineParser &line, int wt, int *offs);
|
int process_jump(LineParser &line, int wt, int *offs);
|
||||||
|
|
||||||
|
int AddVersionInfo();
|
||||||
|
int ProcessPages();
|
||||||
|
void PreperInstTypes();
|
||||||
|
void PreperHeaders(IGrowBuf *hdrbuf);
|
||||||
|
|
||||||
int resolve_jump_int(const char *fn, int *a, int offs, int start, int end);
|
int resolve_jump_int(const char *fn, int *a, int offs, int start, int end);
|
||||||
int resolve_call_int(const char *fn, const char *str, int fptr, int *ofs);
|
int resolve_call_int(const char *fn, const char *str, int fptr, int *ofs);
|
||||||
int resolve_instruction(const char *fn, const char *str, entry *w, int offs, int start, int end);
|
int resolve_instruction(const char *fn, const char *str, entry *w, int offs, int start, int end);
|
||||||
|
@ -180,27 +212,44 @@ class CEXEBuild {
|
||||||
int uninstall_generate();
|
int uninstall_generate();
|
||||||
void set_uninstall_mode(int un);
|
void set_uninstall_mode(int un);
|
||||||
|
|
||||||
// lang.cpp functions and vars
|
// lang.cpp functions and variables
|
||||||
StringTable *GetTable(LANGID &lang);
|
void InitLangTables();
|
||||||
int SetString(char *string, int id, int process, LANGID lang=0);
|
LanguageTable *GetLangTable(LANGID &lang);
|
||||||
int SetString(char *string, int id, int process, StringTable *table);
|
int DefineLangString(char *name, int process=-1);
|
||||||
int GetUserString(char *name);
|
int DefineInnerLangString(int id, int process=-1);
|
||||||
int SetUserString(char *name, LANGID lang, char *string, int process=1);
|
int SetLangString(char *name, LANGID lang, char *string);
|
||||||
int WriteStringTables();
|
int SetInnerString(int id, char *string);
|
||||||
void FillStringTable(StringTable *table, NLF *nlf=0);
|
int GenerateLangTables();
|
||||||
#define IsNotSet(s) _IsNotSet(string_tables.size()?&(string_tables[0]->s):0)
|
void FillLanguageTable(LanguageTable *table);
|
||||||
bool _IsNotSet(int *str); // Checks if a string is not set in all of the string tables
|
int HasUserDefined(int id) {
|
||||||
#define IsSet(s,lang) _IsSet(string_tables.size()?&(string_tables[0]->s):0,lang)
|
const char *us = UserInnerStrings.get(id);
|
||||||
bool _IsSet(int *str, LANGID lang); // Checks if a string is set in a given string table
|
return us && *us;
|
||||||
|
};
|
||||||
|
|
||||||
|
LanguageTable *LoadLangFile(char *filename);
|
||||||
|
void DeleteLangTable(LanguageTable *table);
|
||||||
|
|
||||||
|
NLFRef NLFRefs[NLF_STRINGS];
|
||||||
|
bool keep_ref;
|
||||||
|
StringsArray UserInnerStrings;
|
||||||
|
bool defcodepage_set;
|
||||||
|
GrowBuf lang_tables;
|
||||||
|
LANGID last_used_lang;
|
||||||
|
LangStringList build_langstrings;
|
||||||
|
int build_langstring_num, ubuild_langstring_num;
|
||||||
|
|
||||||
unsigned int uDefCodePage;
|
unsigned int uDefCodePage;
|
||||||
|
|
||||||
bool next_used, install_used, comppage_used, license_force_radio_used, register_used, unregister_used;
|
// pages stuff
|
||||||
|
int license_res_id;
|
||||||
|
page *cur_page;
|
||||||
|
int cur_page_type;
|
||||||
|
int enable_last_page_cancel, uenable_last_page_cancel;
|
||||||
|
|
||||||
|
// User variables stuff
|
||||||
int GetUserVarIndex(LineParser &line, int token);
|
int GetUserVarIndex(LineParser &line, int token);
|
||||||
// Added by ramon 3 jun 2003
|
// Added by ramon 3 jun 2003
|
||||||
#ifdef NSIS_SUPPORT_NAMED_USERVARS
|
#ifdef NSIS_SUPPORT_NAMED_USERVARS
|
||||||
bool b_abort_compile;
|
|
||||||
UserVarsStringList m_UserVarNames;
|
UserVarsStringList m_UserVarNames;
|
||||||
int DeclaredUserVar(const char *VarName);
|
int DeclaredUserVar(const char *VarName);
|
||||||
void VerifyDeclaredUserVarRefs(UserVarsStringList *pVarsStringList);
|
void VerifyDeclaredUserVarRefs(UserVarsStringList *pVarsStringList);
|
||||||
|
@ -216,12 +265,6 @@ class CEXEBuild {
|
||||||
bool build_compressor_set;
|
bool build_compressor_set;
|
||||||
bool build_compress_whole;
|
bool build_compress_whole;
|
||||||
|
|
||||||
bool use_first_insttype;
|
|
||||||
|
|
||||||
vector<NLF*> build_nlfs;
|
|
||||||
vector<StringTable*> string_tables;
|
|
||||||
LANGID last_used_lang;
|
|
||||||
|
|
||||||
bool no_space_texts;
|
bool no_space_texts;
|
||||||
|
|
||||||
int has_called_write_output;
|
int has_called_write_output;
|
||||||
|
@ -231,14 +274,12 @@ class CEXEBuild {
|
||||||
build_datesave, build_optimize_datablock,
|
build_datesave, build_optimize_datablock,
|
||||||
build_allowskipfiles; // Added by ramon 23 May 2003
|
build_allowskipfiles; // Added by ramon 23 May 2003
|
||||||
|
|
||||||
header build_header;
|
header build_header, build_uninst, *cur_header;
|
||||||
int uninstall_mode;
|
int uninstall_mode;
|
||||||
uninstall_header build_uninst;
|
|
||||||
int uninstall_size,uninstall_size_full;
|
int uninstall_size,uninstall_size_full;
|
||||||
int uninstaller_writes_used;
|
int uninstaller_writes_used;
|
||||||
|
|
||||||
char build_output_filename[1024];
|
char build_output_filename[1024];
|
||||||
char cur_out_path[1024];
|
|
||||||
|
|
||||||
// Added by ramon 6 jun 2003
|
// Added by ramon 6 jun 2003
|
||||||
#ifdef NSIS_SUPPORT_VERSION_INFO
|
#ifdef NSIS_SUPPORT_VERSION_INFO
|
||||||
|
@ -262,21 +303,19 @@ class CEXEBuild {
|
||||||
|
|
||||||
int build_cursection_isfunc;
|
int build_cursection_isfunc;
|
||||||
section *build_cursection;
|
section *build_cursection;
|
||||||
TinyGrowBuf build_sections;
|
TinyGrowBuf build_sections, ubuild_sections, *cur_sections;
|
||||||
GrowBuf build_entries,ubuild_entries, *cur_entries;
|
GrowBuf build_entries,ubuild_entries, *cur_entries;
|
||||||
TinyGrowBuf build_functions, ubuild_functions, *cur_functions;
|
TinyGrowBuf build_functions, ubuild_functions, *cur_functions;
|
||||||
TinyGrowBuf build_labels, ubuild_labels, *cur_labels;
|
TinyGrowBuf build_labels, ubuild_labels, *cur_labels;
|
||||||
StringList build_strlist, ubuild_strlist;
|
StringList build_strlist, ubuild_strlist, *cur_strlist;
|
||||||
GrowBuf build_langtables, ubuild_langtables;
|
GrowBuf build_langtables, ubuild_langtables, *cur_langtables;
|
||||||
LangStringList build_userlangstrings, ubuild_userlangstrings;
|
TinyGrowBuf build_pages, ubuild_pages, *cur_pages;
|
||||||
TinyGrowBuf build_pages, ubuild_pages;
|
TinyGrowBuf build_ctlcolors, ubuild_ctlcolors, *cur_ctlcolors;
|
||||||
|
|
||||||
char build_last_page_define[1024], ubuild_last_page_define[1024];
|
|
||||||
int build_custom_used, ubuild_custom_used;
|
|
||||||
int enable_last_page_cancel, uenable_last_page_cancel;
|
|
||||||
|
|
||||||
MMapBuf build_datablock, ubuild_datablock; // use GrowBuf here instead of MMapBuf if you want
|
MMapBuf build_datablock, ubuild_datablock; // use GrowBuf here instead of MMapBuf if you want
|
||||||
IGrowBuf *cur_datablock;
|
IGrowBuf *cur_datablock;
|
||||||
|
|
||||||
|
TinyGrowBuf verbose_stack;
|
||||||
|
|
||||||
unsigned char *header_data_new;
|
unsigned char *header_data_new;
|
||||||
int exeheader_size_new;
|
int exeheader_size_new;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "exedata.h"
|
#include "exedata.h"
|
||||||
|
|
||||||
|
//#ifndef _DEBUG
|
||||||
#ifdef NSIS_CONFIG_COMPONENTPAGE
|
#ifdef NSIS_CONFIG_COMPONENTPAGE
|
||||||
#include "exehead/Release-zlib/bitmap1.h"
|
#include "exehead/Release-zlib/bitmap1.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,11 +8,19 @@
|
||||||
#include "exehead/Release-zlib/unicon.h"
|
#include "exehead/Release-zlib/unicon.h"
|
||||||
#include "exehead/Release-zlib/exehead_zlib.h"
|
#include "exehead/Release-zlib/exehead_zlib.h"
|
||||||
#include "exehead/Release-bzip2/exehead_bzip2.h"
|
#include "exehead/Release-bzip2/exehead_bzip2.h"
|
||||||
// Changed by Amir Szekely 31st July 2002
|
/*#else
|
||||||
|
#ifdef NSIS_CONFIG_COMPONENTPAGE
|
||||||
|
#include "exehead/Debug-zlib/bitmap1.h"
|
||||||
|
#endif
|
||||||
|
#include "exehead/Debug-zlib/icon.h"
|
||||||
|
#include "exehead/Debug-zlib/unicon.h"
|
||||||
|
#include "exehead/Debug-zlib/exehead_zlib.h"
|
||||||
|
#include "exehead/Debug-bzip2/exehead_bzip2.h"
|
||||||
|
#endif*/
|
||||||
|
|
||||||
int zlib_exeheader_size=sizeof(zlib_header_data);
|
int zlib_exeheader_size=sizeof(zlib_header_data);
|
||||||
int bzip2_exeheader_size=sizeof(bzip2_header_data);
|
int bzip2_exeheader_size=sizeof(bzip2_header_data);
|
||||||
int exeheader_size=0;
|
int exeheader_size=0;
|
||||||
|
|
||||||
// Changed by Amir Szekely 8th July 2002
|
|
||||||
int icondata_size=sizeof(icon_data)-22;
|
int icondata_size=sizeof(icon_data)-22;
|
||||||
int unicondata_size=sizeof(unicon_data)-22;
|
int unicondata_size=sizeof(unicon_data)-22;
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <commctrl.h>
|
#include <commctrl.h>
|
||||||
|
#include <shlobj.h>
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "fileform.h"
|
#include "fileform.h"
|
||||||
|
@ -58,6 +59,13 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdParam,
|
||||||
|
|
||||||
InitCommonControls();
|
InitCommonControls();
|
||||||
|
|
||||||
|
#if defined(NSIS_SUPPORT_ACTIVEXREG) || defined(NSIS_SUPPORT_CREATESHORTCUT)
|
||||||
|
{
|
||||||
|
extern HRESULT g_hres;
|
||||||
|
g_hres=OleInitialize(NULL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
GetTempPath(sizeof(state_temp_dir), state_temp_dir);
|
GetTempPath(sizeof(state_temp_dir), state_temp_dir);
|
||||||
validate_filename(state_temp_dir);
|
validate_filename(state_temp_dir);
|
||||||
CreateDirectory(state_temp_dir, NULL);
|
CreateDirectory(state_temp_dir, NULL);
|
||||||
|
@ -127,7 +135,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdParam,
|
||||||
while (*p) p++;
|
while (*p) p++;
|
||||||
|
|
||||||
while (p >= cmdline && (p[0] != '_' || p[1] != '?' || p[2] != '=')) p--;
|
while (p >= cmdline && (p[0] != '_' || p[1] != '?' || p[2] != '=')) p--;
|
||||||
|
|
||||||
if (p >= cmdline)
|
if (p >= cmdline)
|
||||||
{
|
{
|
||||||
*(p-1)=0; // terminate before the " _?="
|
*(p-1)=0; // terminate before the " _?="
|
||||||
|
@ -200,6 +208,11 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdParam,
|
||||||
log_write(1);
|
log_write(1);
|
||||||
#endif//NSIS_CONFIG_LOG
|
#endif//NSIS_CONFIG_LOG
|
||||||
end:
|
end:
|
||||||
|
|
||||||
|
#if defined(NSIS_SUPPORT_ACTIVEXREG) || defined(NSIS_SUPPORT_CREATESHORTCUT)
|
||||||
|
OleUninitialize();
|
||||||
|
#endif
|
||||||
|
|
||||||
if (g_db_hFile != INVALID_HANDLE_VALUE) CloseHandle(g_db_hFile);
|
if (g_db_hFile != INVALID_HANDLE_VALUE) CloseHandle(g_db_hFile);
|
||||||
#ifdef NSIS_COMPRESS_WHOLE
|
#ifdef NSIS_COMPRESS_WHOLE
|
||||||
if (dbd_hFile != INVALID_HANDLE_VALUE) CloseHandle(dbd_hFile);
|
if (dbd_hFile != INVALID_HANDLE_VALUE) CloseHandle(dbd_hFile);
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -8,8 +8,8 @@
|
||||||
|
|
||||||
#ifdef NSIS_SUPPORT_BGBG
|
#ifdef NSIS_SUPPORT_BGBG
|
||||||
|
|
||||||
#define c1 g_inst_cmnheader->bg_color1
|
#define c1 g_header->bg_color1
|
||||||
#define c2 g_inst_cmnheader->bg_color2
|
#define c2 g_header->bg_color2
|
||||||
|
|
||||||
LRESULT CALLBACK BG_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
LRESULT CALLBACK BG_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
|
@ -49,7 +49,7 @@ LRESULT CALLBACK BG_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
r.bottom+=4;
|
r.bottom+=4;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_inst_cmnheader->bg_textcolor != -1)
|
if (g_header->bg_textcolor != -1)
|
||||||
{
|
{
|
||||||
HFONT newFont, oldFont;
|
HFONT newFont, oldFont;
|
||||||
newFont = CreateFont(40,0,0,0,FW_BOLD,TRUE,FALSE,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"Garamond");
|
newFont = CreateFont(40,0,0,0,FW_BOLD,TRUE,FALSE,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"Garamond");
|
||||||
|
@ -60,7 +60,7 @@ LRESULT CALLBACK BG_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
r.top=8;
|
r.top=8;
|
||||||
my_GetWindowText(hwnd,buf,sizeof(buf));
|
my_GetWindowText(hwnd,buf,sizeof(buf));
|
||||||
SetBkMode(hdc,TRANSPARENT);
|
SetBkMode(hdc,TRANSPARENT);
|
||||||
SetTextColor(hdc,g_inst_cmnheader->bg_textcolor);
|
SetTextColor(hdc,g_header->bg_textcolor);
|
||||||
oldFont = SelectObject(hdc,newFont);
|
oldFont = SelectObject(hdc,newFont);
|
||||||
DrawText(hdc,buf,-1,&r,DT_TOP|DT_LEFT|DT_SINGLELINE|DT_NOPREFIX);
|
DrawText(hdc,buf,-1,&r,DT_TOP|DT_LEFT|DT_SINGLELINE|DT_NOPREFIX);
|
||||||
SelectObject(hdc,oldFont);
|
SelectObject(hdc,oldFont);
|
||||||
|
|
|
@ -26,14 +26,18 @@
|
||||||
// really a big deal, but not usually needed).
|
// really a big deal, but not usually needed).
|
||||||
#define NSIS_MAX_STRLEN 1024
|
#define NSIS_MAX_STRLEN 1024
|
||||||
|
|
||||||
// NSIS_MAX_INST_TYPES specified the maximum install types.
|
// NSIS_MAX_INST_TYPES define the maximum install types.
|
||||||
// note that this should not exceed 32, ever.
|
// note that this should not exceed 32, ever.
|
||||||
#define NSIS_MAX_INST_TYPES 32
|
#define NSIS_MAX_INST_TYPES 32
|
||||||
|
|
||||||
|
// NSIS_DEFAULT_LANG defines the default language id NSIS will use if nothing
|
||||||
|
// else is defined in the script. Default value is 1033 which is English.
|
||||||
|
#define NSIS_DEFAULT_LANG 1033
|
||||||
|
|
||||||
// NSIS_CONFIG_UNINSTALL_SUPPORT enables the uninstaller
|
// NSIS_CONFIG_UNINSTALL_SUPPORT enables the uninstaller
|
||||||
// support. Comment it out if your installers don't need
|
// support. Comment it out if your installers don't need
|
||||||
// uninstallers
|
// uninstallers
|
||||||
// adds approximately 2kb.
|
// adds less than 1kb.
|
||||||
#define NSIS_CONFIG_UNINSTALL_SUPPORT
|
#define NSIS_CONFIG_UNINSTALL_SUPPORT
|
||||||
|
|
||||||
// NSIS_CONFIG_LICENSEPAGE enables support for the installer to
|
// NSIS_CONFIG_LICENSEPAGE enables support for the installer to
|
||||||
|
@ -54,7 +58,7 @@
|
||||||
#define NSIS_CONFIG_VISIBLE_SUPPORT
|
#define NSIS_CONFIG_VISIBLE_SUPPORT
|
||||||
|
|
||||||
// NSIS_CONFIG_ENHANCEDUI_SUPPORT enables support for CreateFont,
|
// NSIS_CONFIG_ENHANCEDUI_SUPPORT enables support for CreateFont,
|
||||||
// SetBkColor (used by some UIs), SetBrandingImage, .onInitDialog, etc
|
// SetCtlColors (used by some UIs), SetBrandingImage, .onGUIInit, etc
|
||||||
#define NSIS_CONFIG_ENHANCEDUI_SUPPORT
|
#define NSIS_CONFIG_ENHANCEDUI_SUPPORT
|
||||||
|
|
||||||
// NSIS_CONFIG_COMPRESSION_SUPPORT enables support for making installers
|
// NSIS_CONFIG_COMPRESSION_SUPPORT enables support for making installers
|
||||||
|
@ -103,9 +107,9 @@
|
||||||
|
|
||||||
// NSIS_CONFIG_LOG enables the logging facility.
|
// NSIS_CONFIG_LOG enables the logging facility.
|
||||||
// turning this on (by uncommenting it) adds about
|
// turning this on (by uncommenting it) adds about
|
||||||
// 3kb, but can be useful in debugging your installers.
|
// 4kb, but can be useful in debugging your installers.
|
||||||
// NOT ENABLED BY DEFAULT.
|
// NOT ENABLED BY DEFAULT.
|
||||||
// #define NSIS_CONFIG_LOG
|
//#define NSIS_CONFIG_LOG
|
||||||
|
|
||||||
// NSIS_SUPPORT_BGBG enables support for the blue (well, whatever
|
// NSIS_SUPPORT_BGBG enables support for the blue (well, whatever
|
||||||
// color you want) gradient background window.
|
// color you want) gradient background window.
|
||||||
|
@ -253,7 +257,7 @@
|
||||||
#undef NSIS_SUPPORT_BGBG
|
#undef NSIS_SUPPORT_BGBG
|
||||||
#endif
|
#endif
|
||||||
#ifdef NSIS_CONFIG_ENHANCEDUI_SUPPORT
|
#ifdef NSIS_CONFIG_ENHANCEDUI_SUPPORT
|
||||||
#undef NSIS_CONFIG_ENHANCEDUI_SUPPORT
|
#undef NSIS_CONFIG_ENHANCEDUI_SUPPORT
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -354,18 +358,22 @@
|
||||||
#error NSIS_MAX_INST_TYPES > 32
|
#error NSIS_MAX_INST_TYPES > 32
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef NSIS_DEFAULT_LANG
|
||||||
|
#define NSIS_DEFAULT_LANG 1033
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef INVALID_FILE_ATTRIBUTES
|
#ifndef INVALID_FILE_ATTRIBUTES
|
||||||
#define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
|
#define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// This is the old static var count that occupies memory
|
// This is the old static var count that occupies memory
|
||||||
// From $0 to $PLUGINSDIR
|
// From $0 to $PLUGINSDIR, $_CLICK
|
||||||
#define USER_VARS_COUNT 26
|
#define USER_VARS_COUNT 28
|
||||||
|
|
||||||
#ifdef NSIS_SUPPORT_NAMED_USERVARS
|
#ifdef NSIS_SUPPORT_NAMED_USERVARS
|
||||||
// This is the total number of old static var
|
// This is the total number of old static var
|
||||||
// From $0 to $HWNDPARENT
|
// From $0 to $HWNDPARENT
|
||||||
#define TOTAL_COMPATIBLE_STATIC_VARS_COUNT 36
|
#define TOTAL_COMPATIBLE_STATIC_VARS_COUNT 37
|
||||||
|
|
||||||
#define VARS_SECTION_NAME ".ndata"
|
#define VARS_SECTION_NAME ".ndata"
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,7 +1,7 @@
|
||||||
#ifndef _EXEC_H_
|
#ifndef _EXEC_H_
|
||||||
#define _EXEC_H_
|
#define _EXEC_H_
|
||||||
|
|
||||||
extern union installer_flags g_flags;
|
extern union exec_flags g_exec_flags;
|
||||||
|
|
||||||
int NSISCALL ExecuteCodeSegment(int pos, HWND hwndProgress); // returns 0 on success
|
int NSISCALL ExecuteCodeSegment(int pos, HWND hwndProgress); // returns 0 on success
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
#include "state.h"
|
#include "state.h"
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
#include "lang.h"
|
#include "lang.h"
|
||||||
|
#include "ui.h"
|
||||||
|
#include "exec.h"
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_COMPRESSION_SUPPORT
|
#ifdef NSIS_CONFIG_COMPRESSION_SUPPORT
|
||||||
#ifdef NSIS_COMPRESS_USE_ZLIB
|
#ifdef NSIS_COMPRESS_USE_ZLIB
|
||||||
|
@ -23,11 +25,12 @@
|
||||||
#endif//NSIS_COMPRESS_USE_BZIP2
|
#endif//NSIS_COMPRESS_USE_BZIP2
|
||||||
#endif//NSIS_CONFIG_COMPRESSION_SUPPORT
|
#endif//NSIS_CONFIG_COMPRESSION_SUPPORT
|
||||||
|
|
||||||
#include "ui.h"
|
struct block_header g_blocks[BLOCKS_NUM];
|
||||||
|
header *g_header;
|
||||||
|
int g_flags;
|
||||||
|
int g_filehdrsize;
|
||||||
|
int g_is_uninstaller;
|
||||||
|
|
||||||
char *g_db_strtab;
|
|
||||||
|
|
||||||
static int g_db_offset;
|
|
||||||
HANDLE g_db_hFile;
|
HANDLE g_db_hFile;
|
||||||
|
|
||||||
#if defined(NSIS_CONFIG_COMPRESSION_SUPPORT) && defined(NSIS_COMPRESS_WHOLE)
|
#if defined(NSIS_CONFIG_COMPRESSION_SUPPORT) && defined(NSIS_COMPRESS_WHOLE)
|
||||||
|
@ -46,24 +49,42 @@ BOOL CALLBACK verProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
if (uMsg == WM_INITDIALOG)
|
if (uMsg == WM_INITDIALOG)
|
||||||
{
|
{
|
||||||
SetTimer(hwndDlg,1,250,NULL);
|
SetTimer(hwndDlg,1,250,NULL);
|
||||||
msg = (char*)lParam;
|
msg = (char *) lParam;
|
||||||
uMsg = WM_TIMER;
|
uMsg = WM_TIMER;
|
||||||
}
|
}
|
||||||
if (uMsg == WM_TIMER)
|
if (uMsg == WM_TIMER
|
||||||
|
#ifdef NSIS_COMPRESS_WHOLE
|
||||||
|
|| uMsg == WM_DESTROY
|
||||||
|
#endif
|
||||||
|
)
|
||||||
{
|
{
|
||||||
static char bt[64];
|
static char bt[64];
|
||||||
wsprintf(bt,msg,MulDiv(m_pos,100,m_length));
|
int percent=MulDiv(m_pos,100,m_length);
|
||||||
|
#ifdef NSIS_COMPRESS_WHOLE
|
||||||
|
if (msg)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
wsprintf(bt,msg,percent);
|
||||||
|
|
||||||
my_SetWindowText(hwndDlg,bt);
|
my_SetWindowText(hwndDlg,bt);
|
||||||
my_SetDialogItemText(hwndDlg,IDC_STR,bt);
|
my_SetDialogItemText(hwndDlg,IDC_STR,bt);
|
||||||
|
|
||||||
|
ShowWindow(hwndDlg, SW_SHOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef NSIS_COMPRESS_WHOLE
|
||||||
|
if (ui_st_updateflag & 1)
|
||||||
|
{
|
||||||
|
wsprintf(bt, "... %d%%", percent);
|
||||||
|
update_status_text(0, bt);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif//NSIS_CONFIG_CRC_SUPPORT || NSIS_COMPRESS_WHOLE
|
#endif//NSIS_CONFIG_CRC_SUPPORT || NSIS_COMPRESS_WHOLE
|
||||||
#endif//NSIS_CONFIG_VISIBLE_SUPPORT
|
#endif//NSIS_CONFIG_VISIBLE_SUPPORT
|
||||||
|
|
||||||
int inst_flags;
|
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_COMPRESSION_SUPPORT
|
#ifdef NSIS_CONFIG_COMPRESSION_SUPPORT
|
||||||
static z_stream g_inflate_stream;
|
static z_stream g_inflate_stream;
|
||||||
#endif
|
#endif
|
||||||
|
@ -84,11 +105,14 @@ const char * NSISCALL loadHeaders(int cl_flags)
|
||||||
|
|
||||||
void *data;
|
void *data;
|
||||||
firstheader h;
|
firstheader h;
|
||||||
|
header *header;
|
||||||
|
|
||||||
|
HANDLE db_hFile;
|
||||||
|
|
||||||
GetModuleFileName(g_hInstance, state_exe_directory, NSIS_MAX_STRLEN);
|
GetModuleFileName(g_hInstance, state_exe_directory, NSIS_MAX_STRLEN);
|
||||||
|
|
||||||
g_db_hFile = myOpenFile(state_exe_directory, GENERIC_READ, OPEN_EXISTING);
|
g_db_hFile = db_hFile = myOpenFile(state_exe_directory, GENERIC_READ, OPEN_EXISTING);
|
||||||
if (g_db_hFile == INVALID_HANDLE_VALUE)
|
if (db_hFile == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
return _LANG_CANTOPENSELF;
|
return _LANG_CANTOPENSELF;
|
||||||
}
|
}
|
||||||
|
@ -97,7 +121,7 @@ const char * NSISCALL loadHeaders(int cl_flags)
|
||||||
|
|
||||||
trimslashtoend(state_exe_directory);
|
trimslashtoend(state_exe_directory);
|
||||||
|
|
||||||
left = m_length = GetFileSize(g_db_hFile,NULL);
|
left = m_length = GetFileSize(db_hFile,NULL);
|
||||||
while (left > 0)
|
while (left > 0)
|
||||||
{
|
{
|
||||||
static char temp[512];
|
static char temp[512];
|
||||||
|
@ -160,7 +184,7 @@ const char * NSISCALL loadHeaders(int cl_flags)
|
||||||
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
|
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_SILENT_SUPPORT
|
#ifdef NSIS_CONFIG_SILENT_SUPPORT
|
||||||
else if (cl_flags & FH_FLAGS_SILENT == 0)
|
else if ((cl_flags & FH_FLAGS_SILENT) == 0)
|
||||||
#endif//NSIS_CONFIG_SILENT_SUPPORT
|
#endif//NSIS_CONFIG_SILENT_SUPPORT
|
||||||
{
|
{
|
||||||
if (hwnd)
|
if (hwnd)
|
||||||
|
@ -200,7 +224,7 @@ const char * NSISCALL loadHeaders(int cl_flags)
|
||||||
if (do_crc)
|
if (do_crc)
|
||||||
{
|
{
|
||||||
int fcrc;
|
int fcrc;
|
||||||
SetSelfFilePointer(m_pos, FILE_BEGIN);
|
SetSelfFilePointer(m_pos);
|
||||||
if (!ReadSelfFile(&fcrc, sizeof(int)) || crc != fcrc)
|
if (!ReadSelfFile(&fcrc, sizeof(int)) || crc != fcrc)
|
||||||
return _LANG_INVALIDCRC;
|
return _LANG_INVALIDCRC;
|
||||||
}
|
}
|
||||||
|
@ -218,10 +242,10 @@ const char * NSISCALL loadHeaders(int cl_flags)
|
||||||
if (dbd_hFile == INVALID_HANDLE_VALUE)
|
if (dbd_hFile == INVALID_HANDLE_VALUE)
|
||||||
return _LANG_ERRORWRITINGTEMP;
|
return _LANG_ERRORWRITINGTEMP;
|
||||||
}
|
}
|
||||||
dbd_srcpos = SetSelfFilePointer(g_filehdrsize + sizeof(firstheader), FILE_BEGIN);
|
dbd_srcpos = SetSelfFilePointer(g_filehdrsize + sizeof(firstheader));
|
||||||
dbd_fulllen = dbd_srcpos - sizeof(h) + h.length_of_all_following_data - ((cl_flags & FH_FLAGS_NO_CRC) ? 0 : sizeof(int));
|
dbd_fulllen = dbd_srcpos - sizeof(h) + h.length_of_all_following_data - ((cl_flags & FH_FLAGS_NO_CRC) ? 0 : sizeof(int));
|
||||||
#else
|
#else
|
||||||
SetSelfFilePointer(g_filehdrsize + sizeof(firstheader), FILE_BEGIN);
|
SetSelfFilePointer(g_filehdrsize + sizeof(firstheader));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (GetCompressedDataFromDataBlockToMemory(-1, data, h.length_of_header) != h.length_of_header)
|
if (GetCompressedDataFromDataBlockToMemory(-1, data, h.length_of_header) != h.length_of_header)
|
||||||
|
@ -230,40 +254,35 @@ const char * NSISCALL loadHeaders(int cl_flags)
|
||||||
return _LANG_INVALIDCRC;
|
return _LANG_INVALIDCRC;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(NSIS_COMPRESS_WHOLE) || !defined(NSIS_CONFIG_COMPRESSION_SUPPORT)
|
header = g_header = data;
|
||||||
g_db_offset = SetSelfFilePointer(0,FILE_CURRENT);
|
|
||||||
#else
|
|
||||||
g_db_offset = dbd_pos;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
g_inst_combinedheader = data;
|
|
||||||
|
|
||||||
inst_flags = g_inst_cmnheader->flags;
|
|
||||||
#ifdef NSIS_CONFIG_SILENT_SUPPORT
|
#ifdef NSIS_CONFIG_SILENT_SUPPORT
|
||||||
if (cl_flags & FH_FLAGS_SILENT) inst_flags |= CH_FLAGS_SILENT;
|
if (cl_flags & FH_FLAGS_SILENT)
|
||||||
|
header->flags |= CH_FLAGS_SILENT;
|
||||||
|
|
||||||
|
g_exec_flags.silent = header->flags & (CH_FLAGS_SILENT | CH_FLAGS_SILENT_LOG);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
g_flags = header->flags;
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
|
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
|
||||||
if (h.flags & FH_FLAGS_UNINSTALL)
|
if (h.flags & FH_FLAGS_UNINSTALL)
|
||||||
{
|
|
||||||
g_is_uninstaller++;
|
g_is_uninstaller++;
|
||||||
g_inst_page = (page *) (g_inst_uninstheader + 1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
#endif
|
||||||
{
|
|
||||||
g_inst_section=(section *) (g_inst_header + 1);
|
|
||||||
num_sections=g_inst_header->num_sections;
|
|
||||||
g_inst_page=(page *) (g_inst_section + num_sections);
|
|
||||||
}
|
|
||||||
g_inst_entry = (entry *) (g_inst_page + g_inst_cmnheader->num_pages);
|
|
||||||
g_db_strtab = (char *) (g_inst_entry + g_inst_cmnheader->num_entries);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char * NSISCALL GetStringFromStringTab(int offs)
|
crc = BLOCKS_NUM;
|
||||||
{
|
while (crc--)
|
||||||
return g_db_strtab+(offs < 0 ? LANG_STR_TAB(offs) : offs);
|
header->blocks[crc].offset += (int)data;
|
||||||
|
|
||||||
|
#ifdef NSIS_COMPRESS_WHOLE
|
||||||
|
header->blocks[NB_DATA].offset = dbd_pos;
|
||||||
|
#else
|
||||||
|
header->blocks[NB_DATA].offset = SetFilePointer(db_hFile,0,NULL,FILE_CURRENT);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
mini_memcpy(&g_blocks, &header->blocks, sizeof(g_blocks));
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IBUFSIZE 16384
|
#define IBUFSIZE 16384
|
||||||
|
@ -285,16 +304,7 @@ int NSISCALL _dodecomp(int offset, HANDLE hFileOut, char *outbuf, int outbuflen)
|
||||||
|
|
||||||
if (offset>=0)
|
if (offset>=0)
|
||||||
{
|
{
|
||||||
/*
|
SetSelfFilePointer(g_blocks[NB_DATA].offset+offset);
|
||||||
int lp=SetSelfFilePointer(0,FILE_CURRENT);
|
|
||||||
if (lp > g_db_offset+offset)
|
|
||||||
{
|
|
||||||
char buf[1023];
|
|
||||||
wsprintf(buf,"going from %d to %d",lp,g_db_offset+offset);
|
|
||||||
MessageBox(NULL,buf,"seeking back",MB_OK);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
SetSelfFilePointer(g_db_offset+offset,FILE_BEGIN);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ReadSelfFile((LPVOID)&input_len,sizeof(int))) return -3;
|
if (!ReadSelfFile((LPVOID)&input_len,sizeof(int))) return -3;
|
||||||
|
@ -302,8 +312,12 @@ int NSISCALL _dodecomp(int offset, HANDLE hFileOut, char *outbuf, int outbuflen)
|
||||||
#ifdef NSIS_CONFIG_COMPRESSION_SUPPORT
|
#ifdef NSIS_CONFIG_COMPRESSION_SUPPORT
|
||||||
if (input_len & 0x80000000) // compressed
|
if (input_len & 0x80000000) // compressed
|
||||||
{
|
{
|
||||||
|
char progress[64];
|
||||||
|
int input_len_total;
|
||||||
|
DWORD ltc = GetTickCount(), tc;
|
||||||
|
|
||||||
inflateReset(&g_inflate_stream);
|
inflateReset(&g_inflate_stream);
|
||||||
input_len &= 0x7fffffff; // take off top bit.
|
input_len_total = input_len &= 0x7fffffff; // take off top bit.
|
||||||
|
|
||||||
while (input_len > 0)
|
while (input_len > 0)
|
||||||
{
|
{
|
||||||
|
@ -328,6 +342,14 @@ int NSISCALL _dodecomp(int offset, HANDLE hFileOut, char *outbuf, int outbuflen)
|
||||||
|
|
||||||
u=(char*)g_inflate_stream.next_out - outbuffer;
|
u=(char*)g_inflate_stream.next_out - outbuffer;
|
||||||
|
|
||||||
|
tc = GetTickCount();
|
||||||
|
if (tc - ltc > 200 || !input_len)
|
||||||
|
{
|
||||||
|
wsprintf(progress, "... %d%%", MulDiv(input_len_total - input_len, 100, input_len_total));
|
||||||
|
update_status_text(0, progress);
|
||||||
|
ltc = tc;
|
||||||
|
}
|
||||||
|
|
||||||
if (!u) break;
|
if (!u) break;
|
||||||
|
|
||||||
if (!outbuf)
|
if (!outbuf)
|
||||||
|
@ -386,7 +408,7 @@ static int NSISCALL __ensuredata(int amount)
|
||||||
int needed=amount-(dbd_size-dbd_pos);
|
int needed=amount-(dbd_size-dbd_pos);
|
||||||
if (needed>0)
|
if (needed>0)
|
||||||
{
|
{
|
||||||
SetSelfFilePointer(dbd_srcpos,FILE_BEGIN);
|
SetSelfFilePointer(dbd_srcpos);
|
||||||
SetFilePointer(dbd_hFile,dbd_size,NULL,FILE_BEGIN);
|
SetFilePointer(dbd_hFile,dbd_size,NULL,FILE_BEGIN);
|
||||||
m_length=needed;
|
m_length=needed;
|
||||||
m_pos=0;
|
m_pos=0;
|
||||||
|
@ -402,9 +424,9 @@ static int NSISCALL __ensuredata(int amount)
|
||||||
{
|
{
|
||||||
DWORD r,t;
|
DWORD r,t;
|
||||||
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
|
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
|
||||||
if (g_inst_cmnheader)
|
if (g_header)
|
||||||
#ifdef NSIS_CONFIG_SILENT_SUPPORT
|
#ifdef NSIS_CONFIG_SILENT_SUPPORT
|
||||||
if (!(inst_flags&(CH_FLAGS_SILENT|CH_FLAGS_SILENT_LOG)))
|
if (!g_exec_flags.silent)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if (hwnd) {
|
if (hwnd) {
|
||||||
|
@ -412,13 +434,13 @@ static int NSISCALL __ensuredata(int amount)
|
||||||
m_pos=m_length-(amount-(dbd_size-dbd_pos));
|
m_pos=m_length-(amount-(dbd_size-dbd_pos));
|
||||||
while (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) DispatchMessage(&msg);
|
while (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) DispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
else if (g_hwnd && GetTickCount() > verify_time)
|
else if (GetTickCount() > verify_time)
|
||||||
hwnd = CreateDialogParam(
|
hwnd = CreateDialogParam(
|
||||||
g_hInstance,
|
g_hInstance,
|
||||||
MAKEINTRESOURCE(IDD_VERIFY),
|
MAKEINTRESOURCE(IDD_VERIFY),
|
||||||
0,
|
0,
|
||||||
verProc,
|
verProc,
|
||||||
(LPARAM)_LANG_UNPACKING
|
g_hwnd ? 0 : (LPARAM)_LANG_UNPACKING
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
#endif//NSIS_CONFIG_VISIBLE_SUPPORT
|
#endif//NSIS_CONFIG_VISIBLE_SUPPORT
|
||||||
|
@ -458,7 +480,7 @@ int NSISCALL _dodecomp(int offset, HANDLE hFileOut, char *outbuf, int outbuflen)
|
||||||
int retval;
|
int retval;
|
||||||
if (offset>=0)
|
if (offset>=0)
|
||||||
{
|
{
|
||||||
dbd_pos=g_db_offset+offset;
|
dbd_pos=g_blocks[NB_DATA].offset+offset;
|
||||||
SetFilePointer(dbd_hFile,dbd_pos,NULL,FILE_BEGIN);
|
SetFilePointer(dbd_hFile,dbd_pos,NULL,FILE_BEGIN);
|
||||||
}
|
}
|
||||||
retval=__ensuredata(sizeof(int));
|
retval=__ensuredata(sizeof(int));
|
||||||
|
@ -499,7 +521,7 @@ BOOL NSISCALL ReadSelfFile(LPVOID lpBuffer, DWORD nNumberOfBytesToRead)
|
||||||
return ReadFile(g_db_hFile,lpBuffer,nNumberOfBytesToRead,&rd,NULL) && (rd == nNumberOfBytesToRead);
|
return ReadFile(g_db_hFile,lpBuffer,nNumberOfBytesToRead,&rd,NULL) && (rd == nNumberOfBytesToRead);
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD NSISCALL SetSelfFilePointer(LONG lDistanceToMove, DWORD dwMoveMethod)
|
DWORD NSISCALL SetSelfFilePointer(LONG lDistanceToMove)
|
||||||
{
|
{
|
||||||
return SetFilePointer(g_db_hFile,lDistanceToMove,NULL,dwMoveMethod);
|
return SetFilePointer(g_db_hFile,lDistanceToMove,NULL,FILE_BEGIN);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,22 +4,23 @@
|
||||||
#define _FILEFORM_H_
|
#define _FILEFORM_H_
|
||||||
|
|
||||||
|
|
||||||
// stored in file:
|
// * the installer is compsed of the following parts:
|
||||||
// exehead (~34k)
|
// exehead (~34kb)
|
||||||
// firstheader (~28 bytes)
|
// firstheader (struct firstheader)
|
||||||
// hdrinfo (4 bytes describing length/compression)::
|
// * headers (compressed together):
|
||||||
// (if install)
|
// header (struct header)
|
||||||
// header (~228 bytes)
|
// * nsis blocks (described in header->blocks)
|
||||||
// sections (20 bytes each)
|
// pages (struct page)
|
||||||
// (if uninstall)
|
// section headers (struct section)
|
||||||
// uninstall_header (~116 bytes)
|
// entries/instructions (struct entry)
|
||||||
// pages (12 bytes each)
|
// strings (null seperated)
|
||||||
// entries (24 bytes each)
|
// language tables (language id, dialog offset, language strings)
|
||||||
// string table
|
// colors (struct color)
|
||||||
// language tables
|
// data block (files and uninstaller data)
|
||||||
// datablock
|
// * not compressed
|
||||||
// (hdrinfo+datablock is at least 512 bytes if CRC enabled)
|
|
||||||
// CRC (optional - 4 bytes)
|
// CRC (optional - 4 bytes)
|
||||||
|
//
|
||||||
|
// headers + datablock is at least 512 bytes if CRC enabled
|
||||||
|
|
||||||
|
|
||||||
#define MAX_ENTRY_OFFSETS 6
|
#define MAX_ENTRY_OFFSETS 6
|
||||||
|
@ -92,8 +93,7 @@ enum
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_ENHANCEDUI_SUPPORT
|
#ifdef NSIS_CONFIG_ENHANCEDUI_SUPPORT
|
||||||
EW_GETDLGITEM, // GetDlgItem: 3: [outputvar, dialog, item_id]
|
EW_GETDLGITEM, // GetDlgItem: 3: [outputvar, dialog, item_id]
|
||||||
EW_GETWINTEXT, // GetWindowText: 2: [outputvar, hwnd]
|
EW_SETCTLCOLORS, // SerCtlColors: 3: [hwnd, pointer to struct colors]
|
||||||
EW_SETBKCOLOR, // SerBkColor: 2: [hwnd, color]
|
|
||||||
EW_SETBRANDINGIMAGE, // SetBrandingImage: 1: [Bitmap file]
|
EW_SETBRANDINGIMAGE, // SetBrandingImage: 1: [Bitmap file]
|
||||||
EW_CREATEFONT, // CreateFont: 5: [handle output, face name, height, weight, flags]
|
EW_CREATEFONT, // CreateFont: 5: [handle output, face name, height, weight, flags]
|
||||||
EW_SHOWWINDOW, // ShowWindow: 2: [hwnd, show state]
|
EW_SHOWWINDOW, // ShowWindow: 2: [hwnd, show state]
|
||||||
|
@ -211,96 +211,6 @@ typedef struct
|
||||||
int length_of_all_following_data;
|
int length_of_all_following_data;
|
||||||
} firstheader;
|
} firstheader;
|
||||||
|
|
||||||
// Strings common to both installers and uninstallers
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int name; // name of installer
|
|
||||||
|
|
||||||
// unprocessed strings
|
|
||||||
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
|
|
||||||
int branding;
|
|
||||||
int backbutton;
|
|
||||||
int nextbutton;
|
|
||||||
int cancelbutton;
|
|
||||||
int showdetailsbutton;
|
|
||||||
int closebutton; // "Close"
|
|
||||||
int completed;
|
|
||||||
|
|
||||||
int copy_details;
|
|
||||||
|
|
||||||
int byte;
|
|
||||||
int kilo;
|
|
||||||
int mega;
|
|
||||||
int giga;
|
|
||||||
|
|
||||||
// processed strings
|
|
||||||
int subcaptions[5];
|
|
||||||
#endif
|
|
||||||
int caption; // name of installer + " Setup" or whatever.
|
|
||||||
|
|
||||||
#ifdef NSIS_SUPPORT_FILE
|
|
||||||
int fileerrtext;
|
|
||||||
int fileerrtext_noignore;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(NSIS_SUPPORT_DELETE) || defined(NSIS_SUPPORT_RMDIR) || defined(NSIS_SUPPORT_FILE)
|
|
||||||
int cant_write;
|
|
||||||
#endif
|
|
||||||
#ifdef NSIS_SUPPORT_RMDIR
|
|
||||||
int remove_dir;
|
|
||||||
#endif
|
|
||||||
#ifdef NSIS_SUPPORT_COPYFILES
|
|
||||||
int copy_failed;
|
|
||||||
int copy_to;
|
|
||||||
#endif
|
|
||||||
#ifdef NSIS_SUPPORT_ACTIVEXREG
|
|
||||||
int registering;
|
|
||||||
int unregistering;
|
|
||||||
int symbol_not_found;
|
|
||||||
int could_not_load;
|
|
||||||
int no_ole;
|
|
||||||
// not used anywhere - int err_reg_dll;
|
|
||||||
#endif
|
|
||||||
#ifdef NSIS_SUPPORT_CREATESHORTCUT
|
|
||||||
int create_shortcut;
|
|
||||||
int err_creating_shortcut;
|
|
||||||
#endif
|
|
||||||
#ifdef NSIS_SUPPORT_DELETE
|
|
||||||
int del_file;
|
|
||||||
#ifdef NSIS_SUPPORT_MOVEONREBOOT
|
|
||||||
int del_on_reboot;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
|
|
||||||
int created_uninst;
|
|
||||||
int err_creating;
|
|
||||||
#endif
|
|
||||||
#ifdef NSIS_SUPPORT_SHELLEXECUTE
|
|
||||||
int exec_shell;
|
|
||||||
#endif
|
|
||||||
#ifdef NSIS_SUPPORT_EXECUTE
|
|
||||||
int exec;
|
|
||||||
#endif
|
|
||||||
#ifdef NSIS_SUPPORT_MOVEONREBOOT
|
|
||||||
int rename_on_reboot;
|
|
||||||
#endif
|
|
||||||
#ifdef NSIS_SUPPORT_RENAME
|
|
||||||
int rename;
|
|
||||||
#endif
|
|
||||||
#ifdef NSIS_SUPPORT_FILE
|
|
||||||
int extract;
|
|
||||||
int err_writing;
|
|
||||||
int err_decompressing;
|
|
||||||
int skipped;
|
|
||||||
#endif
|
|
||||||
int inst_corrupted;
|
|
||||||
int output_dir;
|
|
||||||
int create_dir;
|
|
||||||
#ifdef NSIS_CONFIG_LOG
|
|
||||||
int log_install_process;
|
|
||||||
#endif
|
|
||||||
} common_strings;
|
|
||||||
|
|
||||||
// Flags for common_header.flags
|
// Flags for common_header.flags
|
||||||
#define CH_FLAGS_DETAILS_SHOWDETAILS 1
|
#define CH_FLAGS_DETAILS_SHOWDETAILS 1
|
||||||
#define CH_FLAGS_DETAILS_NEVERSHOW 2
|
#define CH_FLAGS_DETAILS_NEVERSHOW 2
|
||||||
|
@ -316,25 +226,54 @@ typedef struct
|
||||||
#define CH_FLAGS_COMP_ONLY_ON_CUSTOM 256
|
#define CH_FLAGS_COMP_ONLY_ON_CUSTOM 256
|
||||||
#define CH_FLAGS_NO_CUSTOM 512
|
#define CH_FLAGS_NO_CUSTOM 512
|
||||||
#endif
|
#endif
|
||||||
#ifdef NSIS_CONFIG_LICENSEPAGE
|
|
||||||
#define CH_FLAGS_LICENSE_FORCE_SELECTION 1024
|
// nsis blocks
|
||||||
|
struct block_header {
|
||||||
|
int offset;
|
||||||
|
int num;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
|
||||||
|
NB_PAGES,
|
||||||
#endif
|
#endif
|
||||||
|
NB_SECTIONS,
|
||||||
|
NB_ENTRIES,
|
||||||
|
NB_STRINGS,
|
||||||
|
NB_LANGTABLES,
|
||||||
|
NB_CTLCOLORS,
|
||||||
|
NB_DATA,
|
||||||
|
|
||||||
|
BLOCKS_NUM
|
||||||
|
};
|
||||||
|
|
||||||
// Settings common to both installers and uninstallers
|
// Settings common to both installers and uninstallers
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
int language_tables_num; // number of strings tables in array
|
int flags; // CH_FLAGS_*
|
||||||
int language_table_size; // size of each language table
|
struct block_header blocks[BLOCKS_NUM];
|
||||||
|
|
||||||
int num_entries; // total number of entries
|
// InstallDirRegKey stuff
|
||||||
int num_string_bytes; // total number of bytes taken by strings
|
int install_reg_rootkey;
|
||||||
|
// these two are not processed!
|
||||||
int num_pages; // number of used pages (including custom pages)
|
int install_reg_key_ptr, install_reg_value_ptr;
|
||||||
|
|
||||||
#ifdef NSIS_SUPPORT_BGBG
|
#ifdef NSIS_SUPPORT_BGBG
|
||||||
int bg_color1, bg_color2, bg_textcolor;
|
int bg_color1, bg_color2, bg_textcolor;
|
||||||
#endif
|
#endif
|
||||||
int lb_bg, lb_fg, license_bg;
|
|
||||||
|
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
|
||||||
|
// installation log window colors
|
||||||
|
int lb_bg, lb_fg;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// langtable size
|
||||||
|
int langtable_size;
|
||||||
|
|
||||||
|
#ifdef NSIS_CONFIG_LICENSEPAGE
|
||||||
|
// license background color
|
||||||
|
int license_bg;
|
||||||
|
#endif//NSIS_CONFIG_LICENSEPAGE
|
||||||
|
|
||||||
#ifdef NSIS_SUPPORT_CODECALLBACKS
|
#ifdef NSIS_SUPPORT_CODECALLBACKS
|
||||||
// .on* calls
|
// .on* calls
|
||||||
|
@ -346,69 +285,6 @@ typedef struct
|
||||||
int code_onGUIInit;
|
int code_onGUIInit;
|
||||||
int code_onGUIEnd;
|
int code_onGUIEnd;
|
||||||
#endif
|
#endif
|
||||||
#endif//NSIS_SUPPORT_CODECALLBACKS
|
|
||||||
|
|
||||||
int flags; // CH_FLAGS_*
|
|
||||||
} common_header;
|
|
||||||
|
|
||||||
// Strings specific to installers
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
// these first strings are literals (should not be encoded)
|
|
||||||
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
|
|
||||||
int browse; // "Browse..."
|
|
||||||
int installbutton; // "Install"
|
|
||||||
int spacerequired; // "Space required: "
|
|
||||||
int spaceavailable; // "Space available: "
|
|
||||||
int custom; // Custom
|
|
||||||
int text; // directory page text
|
|
||||||
int dirsubtext; // directory text2
|
|
||||||
#ifdef NSIS_CONFIG_COMPONENTPAGE
|
|
||||||
int componenttext; // component page text
|
|
||||||
int componentsubtext[4];
|
|
||||||
#endif
|
|
||||||
#ifdef NSIS_CONFIG_LICENSEPAGE
|
|
||||||
int licensetext; // license page text
|
|
||||||
int licensedata; // license text
|
|
||||||
int licensebutton; // license button text
|
|
||||||
int licensebuttonagree; // agree check box/radio button
|
|
||||||
int licensebuttondisagree; // disagree check box/radio button
|
|
||||||
#endif//NSIS_CONFIG_LICENSEPAGE
|
|
||||||
#else
|
|
||||||
int foo;
|
|
||||||
#endif
|
|
||||||
} installer_strings;
|
|
||||||
|
|
||||||
// Settings specific to installers
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
// common settings
|
|
||||||
common_header common;
|
|
||||||
|
|
||||||
int install_reg_rootkey;
|
|
||||||
// these two are not processed!
|
|
||||||
int install_reg_key_ptr, install_reg_value_ptr;
|
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_COMPONENTPAGE
|
|
||||||
int install_types[NSIS_MAX_INST_TYPES+1];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_LICENSEPAGE
|
|
||||||
int license_bg; // license background color
|
|
||||||
#endif//NSIS_CONFIG_LICENSEPAGE
|
|
||||||
|
|
||||||
int install_directory_ptr; // default install dir.
|
|
||||||
int install_directory_auto_append; // auto append part
|
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
|
|
||||||
int uninstdata_offset; // -1 if no uninst data.
|
|
||||||
int uninsticon_size;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int num_sections; // total number of sections
|
|
||||||
|
|
||||||
#ifdef NSIS_SUPPORT_CODECALLBACKS
|
|
||||||
// .on* calls
|
|
||||||
int code_onVerifyInstDir;
|
int code_onVerifyInstDir;
|
||||||
#ifdef NSIS_CONFIG_ENHANCEDUI_SUPPORT
|
#ifdef NSIS_CONFIG_ENHANCEDUI_SUPPORT
|
||||||
int code_onMouseOverSection;
|
int code_onMouseOverSection;
|
||||||
|
@ -417,26 +293,20 @@ typedef struct
|
||||||
int code_onSelChange;
|
int code_onSelChange;
|
||||||
#endif//NSIS_CONFIG_COMPONENTPAGE
|
#endif//NSIS_CONFIG_COMPONENTPAGE
|
||||||
#endif//NSIS_SUPPORT_CODECALLBACKS
|
#endif//NSIS_SUPPORT_CODECALLBACKS
|
||||||
|
|
||||||
|
#ifdef NSIS_CONFIG_COMPONENTPAGE
|
||||||
|
int install_types[NSIS_MAX_INST_TYPES+1];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int install_directory_ptr; // default install dir.
|
||||||
|
int install_directory_auto_append; // auto append part
|
||||||
|
|
||||||
|
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
|
||||||
|
int uninstdata_offset; // -1 if no uninst data.
|
||||||
|
int uninsticon_size;
|
||||||
|
#endif
|
||||||
} header;
|
} header;
|
||||||
|
|
||||||
// Strings specific to uninstallers
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int uninstbutton;
|
|
||||||
int uninstalltext;
|
|
||||||
int uninstalltext2;
|
|
||||||
} uninstall_strings;
|
|
||||||
|
|
||||||
// Settings specific to uninstallers
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
// common settings
|
|
||||||
common_header common;
|
|
||||||
|
|
||||||
int code;
|
|
||||||
int code_size;
|
|
||||||
} uninstall_header;
|
|
||||||
|
|
||||||
// used for section->flags
|
// used for section->flags
|
||||||
#define SF_SELECTED 1
|
#define SF_SELECTED 1
|
||||||
#define SF_SUBSEC 2
|
#define SF_SUBSEC 2
|
||||||
|
@ -462,36 +332,77 @@ typedef struct
|
||||||
int offsets[MAX_ENTRY_OFFSETS]; // count and meaning of offsets depend on 'which'
|
int offsets[MAX_ENTRY_OFFSETS]; // count and meaning of offsets depend on 'which'
|
||||||
} entry;
|
} entry;
|
||||||
|
|
||||||
|
// page window proc
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
NSIS_PAGE_CUSTOM = -1,
|
|
||||||
#ifdef NSIS_CONFIG_LICENSEPAGE
|
#ifdef NSIS_CONFIG_LICENSEPAGE
|
||||||
NSIS_PAGE_LICENSE,
|
PWP_LICENSE,
|
||||||
#endif
|
#endif
|
||||||
#ifdef NSIS_CONFIG_COMPONENTPAGE
|
#ifdef NSIS_CONFIG_COMPONENTPAGE
|
||||||
NSIS_PAGE_SELCOM,
|
PWP_SELCOM,
|
||||||
#endif
|
#endif
|
||||||
NSIS_PAGE_DIR,
|
PWP_DIR,
|
||||||
NSIS_PAGE_INSTFILES,
|
PWP_INSTFILES,
|
||||||
NSIS_PAGE_COMPLETED,
|
|
||||||
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
|
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
|
||||||
NSIS_PAGE_UNINST
|
PWP_UNINST,
|
||||||
#endif
|
#endif
|
||||||
|
PWP_COMPLETED,
|
||||||
|
PWP_CUSTOM
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// page flags
|
||||||
|
#define PF_BACK_ENABLE 256
|
||||||
|
#define PF_NEXT_ENABLE 2
|
||||||
|
#define PF_CANCEL_ENABLE 4
|
||||||
|
#define PF_BACK_SHOW 8 // must be SW_SHOWNA, don't change
|
||||||
|
#define PF_LICENSE_STREAM 16
|
||||||
|
#define PF_LICENSE_FORCE_SELECTION 32
|
||||||
|
#define PF_LICENSE_NO_FORCE_SELECTION 64
|
||||||
|
#define PF_LICENSE_SELECTED 1 // must be 1
|
||||||
|
#define PF_NO_NEXT_FOCUS 128
|
||||||
|
#define PF_PAGE_EX 512
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
int id; // index in the pages array
|
int dlg_id; // dialog resource id
|
||||||
|
int wndproc_id;
|
||||||
|
|
||||||
#ifdef NSIS_SUPPORT_CODECALLBACKS
|
#ifdef NSIS_SUPPORT_CODECALLBACKS
|
||||||
int prefunc; // called before the page is created, or if custom to show the it. Allows to skip the page using Abort.
|
// called before the page is created, or if custom to show the page
|
||||||
int showfunc; // function to do stuff right before page is shown
|
// use Abort to skip the page
|
||||||
int leavefunc; // function to do stuff after the page is shown
|
int prefunc;
|
||||||
|
// called right before page is shown
|
||||||
|
int showfunc;
|
||||||
|
// called when the user leaves to the next page
|
||||||
|
// use Abort to force the user to stay on this page
|
||||||
|
int leavefunc;
|
||||||
#endif //NSIS_SUPPORT_CODECALLBACKS
|
#endif //NSIS_SUPPORT_CODECALLBACKS
|
||||||
int caption; // caption tab
|
|
||||||
|
int flags;
|
||||||
|
|
||||||
|
int caption;
|
||||||
|
int back;
|
||||||
int next;
|
int next;
|
||||||
int button_states;
|
int clicknext;
|
||||||
|
int cancel;
|
||||||
|
|
||||||
|
int parms[5];
|
||||||
} page;
|
} page;
|
||||||
|
|
||||||
|
#define CC_TEXT 1
|
||||||
|
#define CC_TEXT_SYS 2
|
||||||
|
#define CC_BK 4
|
||||||
|
#define CC_BK_SYS 8
|
||||||
|
#define CC_BKB 16
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
COLORREF text;
|
||||||
|
LOGBRUSH bk;
|
||||||
|
HBRUSH bkb;
|
||||||
|
int bkmode;
|
||||||
|
int flags;
|
||||||
|
} ctlcolors;
|
||||||
|
|
||||||
// the following are only used/implemented in exehead, not makensis.
|
// the following are only used/implemented in exehead, not makensis.
|
||||||
|
|
||||||
int NSISCALL isheader(firstheader *h); // returns 0 on not header, length_of_datablock on success
|
int NSISCALL isheader(firstheader *h); // returns 0 on not header, length_of_datablock on success
|
||||||
|
@ -510,9 +421,8 @@ int NSISCALL _dodecomp(int offset, HANDLE hFileOut, char *outbuf, int outbuflen)
|
||||||
extern HANDLE g_db_hFile;
|
extern HANDLE g_db_hFile;
|
||||||
extern int g_quit_flag;
|
extern int g_quit_flag;
|
||||||
|
|
||||||
const char * NSISCALL GetStringFromStringTab(int offs);
|
|
||||||
BOOL NSISCALL ReadSelfFile(LPVOID lpBuffer, DWORD nNumberOfBytesToRead);
|
BOOL NSISCALL ReadSelfFile(LPVOID lpBuffer, DWORD nNumberOfBytesToRead);
|
||||||
DWORD NSISCALL SetSelfFilePointer(LONG lDistanceToMove, DWORD dwMoveMethod);
|
DWORD NSISCALL SetSelfFilePointer(LONG lDistanceToMove);
|
||||||
|
|
||||||
// $0..$9, $INSTDIR, etc are encoded as ASCII bytes starting from this value.
|
// $0..$9, $INSTDIR, etc are encoded as ASCII bytes starting from this value.
|
||||||
// Added by ramon 3 jun 2003
|
// Added by ramon 3 jun 2003
|
||||||
|
@ -539,7 +449,7 @@ DWORD NSISCALL SetSelfFilePointer(LONG lDistanceToMove, DWORD dwMoveMethod);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
union installer_flags {
|
union exec_flags {
|
||||||
struct {
|
struct {
|
||||||
int autoclose;
|
int autoclose;
|
||||||
int all_user_var;
|
int all_user_var;
|
||||||
|
@ -550,8 +460,39 @@ union installer_flags {
|
||||||
#endif
|
#endif
|
||||||
int cur_insttype;
|
int cur_insttype;
|
||||||
int insttype_changed;
|
int insttype_changed;
|
||||||
|
#ifdef NSIS_CONFIG_SILENT_SUPPORT
|
||||||
|
int silent;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
int flags[1];
|
int flags[1];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef EXEHEAD
|
||||||
|
extern struct block_header g_blocks[BLOCKS_NUM];
|
||||||
|
extern header *g_header;
|
||||||
|
extern int g_flags;
|
||||||
|
extern int g_filehdrsize;
|
||||||
|
extern int g_is_uninstaller;
|
||||||
|
|
||||||
|
#define g_pages ((page*)g_blocks[NB_PAGES].offset)
|
||||||
|
#define g_sections ((section*)g_blocks[NB_SECTIONS].offset)
|
||||||
|
#define num_sections (g_blocks[NB_SECTIONS].num)
|
||||||
|
#define g_entries ((entry*)g_blocks[NB_ENTRIES].offset)
|
||||||
|
/*extern int num_sections;
|
||||||
|
|
||||||
|
//extern int g_autoclose;
|
||||||
|
extern void *g_inst_combinedheader;
|
||||||
|
extern page *g_inst_page;
|
||||||
|
extern section *g_inst_section;
|
||||||
|
extern entry *g_inst_entry;
|
||||||
|
|
||||||
|
#define g_inst_header ((header *)g_inst_combinedheader)
|
||||||
|
#define g_inst_cmnheader ((common_header *)g_inst_combinedheader)
|
||||||
|
|
||||||
|
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
|
||||||
|
#define g_inst_uninstheader ((uninstall_header *)g_inst_combinedheader)
|
||||||
|
extern int g_is_uninstaller;
|
||||||
|
#endif*/
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif //_FILEFORM_H_
|
#endif //_FILEFORM_H_
|
||||||
|
|
|
@ -24,99 +24,43 @@
|
||||||
|
|
||||||
#define _LANG_GENERIC_ERROR "NSIS ERROR"
|
#define _LANG_GENERIC_ERROR "NSIS ERROR"
|
||||||
|
|
||||||
|
#define LANG_STR_TAB(x) cur_langtable[-((int)x+1)]
|
||||||
|
|
||||||
// Changed by Amir Szekely 3rd August 2002
|
#define LANG_BRANDING -1
|
||||||
// Now supports more than one language in each installer
|
#define LANG_CAPTION -2
|
||||||
|
#define LANG_NAME -3
|
||||||
// Modified by Dave Laundon 10th August 2002
|
#define LANG_SPACE_AVAIL -4
|
||||||
// In many places, these strings are now referenced by an ID (just their offsets
|
#define LANG_SPACE_REQ -5
|
||||||
// into the (common|installer|uninstall)_strings structures) through *_from_lang
|
#define LANG_CANTWRITE -6
|
||||||
// and *FromLang functions - removing code-costly references to the
|
#define LANG_COPYFAILED -7
|
||||||
// cur_(common|install|uninstall)_strings_table globals. Common strings are
|
#define LANG_COPYTO -8
|
||||||
// identified by IDs >=0 and install/uninstall strings by IDs <0. What's more,
|
#define LANG_CANNOTFINDSYMBOL -9
|
||||||
// these IDs fall between -128 to +127 and compile to tiny 2-byte PUSH <8-bit>
|
#define LANG_COULDNOTLOAD -10
|
||||||
// instructions when being passed to the functions.
|
#define LANG_CREATEDIR -11
|
||||||
|
#define LANG_CREATESHORTCUT -12
|
||||||
// Please note that all LANG_* define the offset not the string itself.
|
#define LANG_CREATEDUNINST -13
|
||||||
// To get the string itself use process_string_fromtab, GetStringFromStringTab or LANG_STR().
|
#define LANG_DELETEFILE -14
|
||||||
|
#define LANG_DELETEONREBOOT -15
|
||||||
#define LANG_STR(x) GetStringFromStringTab(x)
|
#define LANG_ERRORCREATINGSHORTCUT -16
|
||||||
#define LANG_STR_TAB(x) cur_language_table[-((int)x+1)]
|
#define LANG_ERRORCREATING -17
|
||||||
|
#define LANG_ERRORDECOMPRESSING -18
|
||||||
#define INSTALL_STR(x) (~((sizeof(common_strings) + FIELD_OFFSET(installer_strings, x)) / sizeof(int)))
|
#define LANG_DLLREGERROR -19
|
||||||
|
#define LANG_EXECSHELL -20
|
||||||
// Installer specific strings
|
#define LANG_EXECUTE -21
|
||||||
#define LANG_BTN_BROWSE (INSTALL_STR(browse))
|
#define LANG_EXTRACT -22
|
||||||
#define LANG_BTN_INSTALL (INSTALL_STR(installbutton))
|
#define LANG_ERRORWRITING -23
|
||||||
#define LANG_SPACE_REQ (INSTALL_STR(spacerequired))
|
#define LANG_INSTCORRUPTED -24
|
||||||
#define LANG_SPACE_AVAIL (INSTALL_STR(spaceavailable))
|
#define LANG_NOOLE -25
|
||||||
#define LANG_COMP_CUSTOM (INSTALL_STR(custom))
|
#define LANG_OUTPUTDIR -26
|
||||||
#define LANG_DIR_TEXT (INSTALL_STR(text))
|
#define LANG_REMOVEDIR -27
|
||||||
#define LANG_DIR_SUBTEXT (INSTALL_STR(dirsubtext))
|
#define LANG_RENAMEONREBOOT -28
|
||||||
#define LANG_COMP_TEXT (INSTALL_STR(componenttext))
|
#define LANG_RENAME -29
|
||||||
#define LANG_COMP_SUBTEXT(x) (INSTALL_STR(componentsubtext[x]))
|
#define LANG_SKIPPED -30
|
||||||
#define LANG_LICENSE_TEXT (INSTALL_STR(licensetext))
|
#define LANG_COPYDETAILS -31
|
||||||
#define LANG_LICENSE_DATA (INSTALL_STR(licensedata))
|
#define LANG_LOG_INSTALL_PROCESS -32
|
||||||
#define LANG_BTN_LICENSE (INSTALL_STR(licensebutton))
|
#define LANG_BYTE -33
|
||||||
#define LANG_BTN_LICENSE_AGREE (INSTALL_STR(licensebuttonagree))
|
#define LANG_KILO -34
|
||||||
#define LANG_BTN_LICENSE_DISAGREE (INSTALL_STR(licensebuttondisagree))
|
#define LANG_MEGA -35
|
||||||
|
#define LANG_GIGA -36
|
||||||
#define UNINSTALL_STR(x) (~((sizeof(common_strings) + FIELD_OFFSET(uninstall_strings, x)) / sizeof(int)))
|
|
||||||
|
|
||||||
// Uninstall specific strings
|
|
||||||
#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) (~(FIELD_OFFSET(common_strings, x) / sizeof(int)))
|
|
||||||
|
|
||||||
// Common strings
|
|
||||||
#define LANG_BTN_NEXT (COMMON_STR(nextbutton))
|
|
||||||
#define LANG_BTN_BACK (COMMON_STR(backbutton))
|
|
||||||
#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]))
|
|
||||||
#define LANG_INSTCORRUPTED (COMMON_STR(inst_corrupted))
|
|
||||||
#define LANG_COPYDETAILS (COMMON_STR(copy_details))
|
|
||||||
#define LANG_LOG_INSTALL_PROCESS (COMMON_STR(log_install_process))
|
|
||||||
#define LANG_BYTE (COMMON_STR(byte))
|
|
||||||
#define LANG_KILO (COMMON_STR(kilo))
|
|
||||||
#define LANG_MEGA (COMMON_STR(mega))
|
|
||||||
#define LANG_GIGA (COMMON_STR(giga))
|
|
||||||
|
|
||||||
// instruction strings
|
|
||||||
#define LANG_FILEERR (COMMON_STR(fileerrtext))
|
|
||||||
#define LANG_FILEERR_NOIGNORE (COMMON_STR(fileerrtext_noignore))
|
|
||||||
#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_REGISTERING (COMMON_STR(registering))
|
|
||||||
#define LANG_UNREGISTERING (COMMON_STR(unregistering))
|
|
||||||
|
|
||||||
#endif//_NSIS_LANG_H_
|
#endif//_NSIS_LANG_H_
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
|
|
||||||
#define IDC_BACK 3
|
#define IDC_BACK 3
|
||||||
#define IDD_LICENSE 102
|
#define IDD_LICENSE 102
|
||||||
|
#define IDD_LICENSE_FSRB 108
|
||||||
|
#define IDD_LICENSE_FSCB 109
|
||||||
#define IDI_ICON2 103
|
#define IDI_ICON2 103
|
||||||
#define IDD_DIR 103
|
#define IDD_DIR 103
|
||||||
#define IDD_SELCOM 104
|
#define IDD_SELCOM 104
|
||||||
|
@ -15,7 +17,7 @@
|
||||||
#define IDD_INSTFILES 106
|
#define IDD_INSTFILES 106
|
||||||
#define IDD_UNINST 107
|
#define IDD_UNINST 107
|
||||||
#define IDD_VERIFY 111
|
#define IDD_VERIFY 111
|
||||||
#define IDB_BITMAP1 109
|
#define IDB_BITMAP1 110
|
||||||
#define IDC_EDIT1 1000
|
#define IDC_EDIT1 1000
|
||||||
#define IDC_BROWSE 1001
|
#define IDC_BROWSE 1001
|
||||||
#define IDC_PROGRESS 1004
|
#define IDC_PROGRESS 1004
|
||||||
|
|
|
@ -28,57 +28,97 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
|
||||||
#if defined(APSTUDIO_INVOKED) || defined(NSIS_CONFIG_LICENSEPAGE)
|
#if defined(APSTUDIO_INVOKED) || defined(NSIS_CONFIG_LICENSEPAGE)
|
||||||
#if defined(APSTUDIO_INVOKED)
|
#if defined(APSTUDIO_INVOKED)
|
||||||
IDD_LICENSE$(NSIS_CONFIG_LICENSEPAGE) DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_LICENSE$(NSIS_CONFIG_LICENSEPAGE) DIALOGEX 0, 0, 266, 130
|
||||||
#else
|
#else
|
||||||
IDD_LICENSE DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_LICENSE DIALOGEX 0, 0, 266, 130
|
||||||
#endif
|
#endif
|
||||||
STYLE DS_CONTROL | DS_SHELLFONT | WS_CHILD
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON IDI_ICON2,IDC_ULICON,0,0,20,20
|
ICON IDI_ICON2,IDC_ULICON,0,0,22,20
|
||||||
LTEXT "",IDC_INTROTEXT,25,0,241,23
|
LTEXT "",IDC_INTROTEXT,25,0,241,23
|
||||||
CONTROL "",IDC_EDIT1,"RichEdit20A",WS_BORDER | WS_VSCROLL |
|
CONTROL "",IDC_EDIT1,"RichEdit20A",WS_BORDER | WS_VSCROLL |
|
||||||
0x804,0,24,266,105
|
0x804,0,24,266,105
|
||||||
END
|
END
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(APSTUDIO_INVOKED) || defined(NSIS_CONFIG_LICENSEPAGE)
|
||||||
|
#if defined(APSTUDIO_INVOKED)
|
||||||
|
IDD_LICENSE_FSRB$(NSIS_CONFIG_LICENSEPAGE) DIALOG DISCARDABLE 0, 0, 266, 130
|
||||||
|
#else
|
||||||
|
IDD_LICENSE_FSRB DIALOG DISCARDABLE 0, 0, 266, 130
|
||||||
|
#endif
|
||||||
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CAPTION
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
ICON IDI_ICON2,1031,0,0,22,20
|
||||||
|
LTEXT "",IDC_INTROTEXT,25,0,241,23
|
||||||
|
CONTROL "",IDC_EDIT1,"RichEdit20A",WS_BORDER | WS_VSCROLL |
|
||||||
|
0x804,0,24,266,85
|
||||||
|
CONTROL "",IDC_LICENSEDISAGREE,"Button",BS_AUTORADIOBUTTON |
|
||||||
|
WS_TABSTOP,0,120,266,9
|
||||||
|
CONTROL "",IDC_LICENSEAGREE,"Button",BS_AUTORADIOBUTTON |
|
||||||
|
WS_TABSTOP,0,110,266,9
|
||||||
|
END
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(APSTUDIO_INVOKED) || defined(NSIS_CONFIG_LICENSEPAGE)
|
||||||
|
#if defined(APSTUDIO_INVOKED)
|
||||||
|
IDD_LICENSE_FSCB$(NSIS_CONFIG_LICENSEPAGE) DIALOG DISCARDABLE 0, 0, 266, 130
|
||||||
|
#else
|
||||||
|
IDD_LICENSE_FSCB DIALOG DISCARDABLE 0, 0, 266, 130
|
||||||
|
#endif
|
||||||
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CAPTION
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
ICON IDI_ICON2,1031,0,0,22,20
|
||||||
|
LTEXT "",IDC_INTROTEXT,25,0,241,23
|
||||||
|
CONTROL "",IDC_EDIT1,"RichEdit20A",WS_BORDER | WS_VSCROLL |
|
||||||
|
0x804,0,24,266,95
|
||||||
|
CONTROL "",IDC_LICENSEAGREE,"Button",BS_AUTOCHECKBOX |
|
||||||
|
WS_TABSTOP,0,120,266,9
|
||||||
|
END
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(APSTUDIO_INVOKED) || defined(NSIS_CONFIG_VISIBLE_SUPPORT)
|
#if defined(APSTUDIO_INVOKED) || defined(NSIS_CONFIG_VISIBLE_SUPPORT)
|
||||||
#if defined(APSTUDIO_INVOKED)
|
#if defined(APSTUDIO_INVOKED)
|
||||||
IDD_DIR$(NSIS_CONFIG_VISIBLE_SUPPORT) DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_DIR$(NSIS_CONFIG_VISIBLE_SUPPORT) DIALOGEX 0, 0, 266, 130
|
||||||
#else
|
#else
|
||||||
IDD_DIR DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_DIR DIALOGEX 0, 0, 266, 130
|
||||||
#endif
|
#endif
|
||||||
STYLE DS_CONTROL | DS_SHELLFONT | WS_CHILD
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
EDITTEXT IDC_DIR,8,49,187,12,ES_AUTOHSCROLL
|
EDITTEXT IDC_DIR,8,49,187,12,ES_AUTOHSCROLL
|
||||||
PUSHBUTTON "",IDC_BROWSE,202,48,55,14
|
PUSHBUTTON "",IDC_BROWSE,202,48,55,14
|
||||||
ICON IDI_ICON2,IDC_ULICON,0,0,20,20
|
ICON IDI_ICON2,IDC_ULICON,0,0,22,20
|
||||||
CONTROL "",IDC_SELDIRTEXT,"Static",SS_LEFTNOWORDWRAP,
|
|
||||||
0,36,265,8
|
CONTROL "",IDC_SPACEAVAILABLE,"Static",SS_LEFTNOWORDWRAP,0,122,
|
||||||
CONTROL "",IDC_SPACEAVAILABLE,"Static",SS_LEFTNOWORDWRAP,0,122,265,8
|
265,8
|
||||||
CONTROL "",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE |
|
CONTROL "",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE |
|
||||||
WS_TABSTOP,8,65,118,10
|
WS_TABSTOP,8,71,118,10
|
||||||
CONTROL "",IDC_SPACEREQUIRED,"Static",SS_LEFTNOWORDWRAP,0,111,265,8
|
CONTROL "",IDC_SPACEREQUIRED,"Static",SS_LEFTNOWORDWRAP,0,111,
|
||||||
|
265,8
|
||||||
LTEXT "",IDC_INTROTEXT,25,0,241,34
|
LTEXT "",IDC_INTROTEXT,25,0,241,34
|
||||||
|
GROUPBOX "",IDC_SELDIRTEXT,1,38,264,30
|
||||||
END
|
END
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(APSTUDIO_INVOKED) || defined(NSIS_CONFIG_COMPONENTPAGE)
|
#if defined(APSTUDIO_INVOKED) || defined(NSIS_CONFIG_COMPONENTPAGE)
|
||||||
#if defined(APSTUDIO_INVOKED)
|
#if defined(APSTUDIO_INVOKED)
|
||||||
IDD_SELCOM$(NSIS_CONFIG_COMPONENTPAGE) DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_SELCOM$(NSIS_CONFIG_COMPONENTPAGE) DIALOGEX 0, 0, 266, 130
|
||||||
#else
|
#else
|
||||||
IDD_SELCOM DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_SELCOM DIALOGEX 0, 0, 266, 130
|
||||||
#endif
|
#endif
|
||||||
STYLE DS_CONTROL | DS_SHELLFONT | WS_CHILD
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
COMBOBOX IDC_COMBO1,114,25,152,102,CBS_DROPDOWNLIST | WS_VSCROLL |
|
COMBOBOX IDC_COMBO1,114,25,152,102,CBS_DROPDOWNLIST | NOT
|
||||||
WS_TABSTOP | NOT WS_VISIBLE
|
WS_VISIBLE | WS_VSCROLL | WS_TABSTOP
|
||||||
ICON IDI_ICON2,IDC_ULICON,0,0,21,20
|
ICON IDI_ICON2,IDC_ULICON,0,0,22,20
|
||||||
LTEXT "",IDC_TEXT2,0,40,108,65
|
LTEXT "",IDC_TEXT2,0,40,108,65
|
||||||
CONTROL "",IDC_TEXT1,"Static",SS_LEFTNOWORDWRAP,0,27,108,8
|
CONTROL "",IDC_TEXT1,"Static",SS_LEFTNOWORDWRAP,0,27,108,8
|
||||||
CONTROL "",IDC_SPACEREQUIRED,"Static",SS_LEFT,0,111,111,18
|
LTEXT "",IDC_SPACEREQUIRED,0,111,111,18,NOT WS_GROUP
|
||||||
LTEXT "",IDC_INTROTEXT,25,0,241,25
|
LTEXT "",IDC_INTROTEXT,25,0,241,25
|
||||||
CONTROL "",IDC_TREE1,"SysTreeView32",TVS_HASBUTTONS |
|
CONTROL "",IDC_TREE1,"SysTreeView32",TVS_HASBUTTONS |
|
||||||
TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP |
|
TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP |
|
||||||
|
@ -88,53 +128,55 @@ END
|
||||||
|
|
||||||
#if defined(APSTUDIO_INVOKED) || defined(NSIS_CONFIG_VISIBLE_SUPPORT)
|
#if defined(APSTUDIO_INVOKED) || defined(NSIS_CONFIG_VISIBLE_SUPPORT)
|
||||||
#if defined(APSTUDIO_INVOKED)
|
#if defined(APSTUDIO_INVOKED)
|
||||||
IDD_INST$(NSIS_CONFIG_VISIBLE_SUPPORT) DIALOGEX DISCARDABLE 0, 0, 280, 162
|
IDD_INST$(NSIS_CONFIG_VISIBLE_SUPPORT) DIALOGEX 0, 0, 280, 162
|
||||||
#else
|
#else
|
||||||
IDD_INST DIALOGEX DISCARDABLE 0, 0, 280, 162
|
IDD_INST DIALOGEX 0, 0, 280, 162
|
||||||
#endif
|
#endif
|
||||||
STYLE DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_BORDER
|
STYLE DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION |
|
||||||
FONT 8, "MS Shell Dlg"
|
WS_SYSMENU
|
||||||
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
PUSHBUTTON "",IDC_BACK,171,142,50,14,WS_GROUP | NOT WS_VISIBLE
|
PUSHBUTTON "",IDC_BACK,171,142,50,14,NOT WS_VISIBLE | WS_GROUP
|
||||||
PUSHBUTTON "",IDOK,223,142,50,14
|
PUSHBUTTON "",IDOK,223,142,50,14
|
||||||
PUSHBUTTON "",IDCANCEL,7,142,50,14
|
PUSHBUTTON "",IDCANCEL,7,142,50,14
|
||||||
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ | WS_GROUP,7,138,267,1
|
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ | WS_GROUP,7,138,
|
||||||
CONTROL "",IDC_CHILDRECT,"Static",SS_BLACKRECT | NOT WS_VISIBLE | WS_GROUP,
|
267,1
|
||||||
7,6,266,130
|
CONTROL "",IDC_CHILDRECT,"Static",SS_BLACKRECT | NOT WS_VISIBLE |
|
||||||
CTEXT "",IDC_VERSTR,59,145,108,8,WS_DISABLED | WS_GROUP
|
WS_GROUP,7,6,266,130
|
||||||
|
CTEXT "",IDC_VERSTR,59,145,108,8,WS_DISABLED
|
||||||
END
|
END
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(APSTUDIO_INVOKED) || defined(NSIS_CONFIG_VISIBLE_SUPPORT)
|
#if defined(APSTUDIO_INVOKED) || defined(NSIS_CONFIG_VISIBLE_SUPPORT)
|
||||||
#if defined(APSTUDIO_INVOKED)
|
#if defined(APSTUDIO_INVOKED)
|
||||||
IDD_INSTFILES$(NSIS_CONFIG_VISIBLE_SUPPORT) DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_INSTFILES$(NSIS_CONFIG_VISIBLE_SUPPORT) DIALOGEX 0, 0, 266, 130
|
||||||
#else
|
#else
|
||||||
IDD_INSTFILES DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_INSTFILES DIALOGEX 0, 0, 266, 130
|
||||||
#endif
|
#endif
|
||||||
STYLE DS_CONTROL | DS_SHELLFONT | WS_CHILD
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
CONTROL "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,24,10,241,11
|
CONTROL "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,24,10,241,
|
||||||
CONTROL "",IDC_INTROTEXT,"Static",SS_LEFTNOWORDWRAP,
|
11
|
||||||
24,0,241,8
|
CONTROL "",IDC_INTROTEXT,"Static",SS_LEFTNOWORDWRAP,24,0,241,8
|
||||||
CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SINGLESEL |
|
CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SINGLESEL |
|
||||||
LVS_NOCOLUMNHEADER | NOT WS_VISIBLE | WS_BORDER |
|
LVS_NOCOLUMNHEADER | NOT WS_VISIBLE | WS_BORDER |
|
||||||
WS_TABSTOP,0,25,265,104
|
WS_TABSTOP,0,25,265,104
|
||||||
ICON IDI_ICON2,IDC_ULICON,0,0,20,20
|
ICON IDI_ICON2,IDC_ULICON,0,0,22,20
|
||||||
PUSHBUTTON "",IDC_SHOWDETAILS,0,28,60,14,NOT WS_TABSTOP
|
PUSHBUTTON "",IDC_SHOWDETAILS,0,28,60,14,NOT WS_TABSTOP
|
||||||
END
|
END
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(APSTUDIO_INVOKED) || defined(_NSIS_CONFIG_UNINSTDLG)
|
#if defined(APSTUDIO_INVOKED) || defined(_NSIS_CONFIG_UNINSTDLG)
|
||||||
#if defined(APSTUDIO_INVOKED)
|
#if defined(APSTUDIO_INVOKED)
|
||||||
IDD_UNINST$(_NSIS_CONFIG_UNINSTDLG) DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_UNINST$(_NSIS_CONFIG_UNINSTDLG) DIALOGEX 0, 0, 266, 130
|
||||||
#else
|
#else
|
||||||
IDD_UNINST DIALOGEX DISCARDABLE 0, 0, 266, 130
|
IDD_UNINST DIALOGEX 0, 0, 266, 130
|
||||||
#endif
|
#endif
|
||||||
STYLE DS_CONTROL | DS_SHELLFONT | WS_CHILD
|
STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
ICON IDI_ICON2,IDC_ULICON,0,1,20,20
|
ICON IDI_ICON2,IDC_ULICON,0,1,22,20
|
||||||
LTEXT "",IDC_UNINSTFROM,0,45,55,8
|
LTEXT "",IDC_UNINSTFROM,0,45,55,8
|
||||||
EDITTEXT IDC_EDIT1,56,43,209,12,ES_AUTOHSCROLL | ES_READONLY
|
EDITTEXT IDC_EDIT1,56,43,209,12,ES_AUTOHSCROLL | ES_READONLY
|
||||||
LTEXT "",IDC_INTROTEXT,25,0,241,34
|
LTEXT "",IDC_INTROTEXT,25,0,241,34
|
||||||
|
@ -143,12 +185,12 @@ END
|
||||||
|
|
||||||
#if defined(APSTUDIO_INVOKED) || defined(_NSIS_CONFIG_VERIFYDIALOG)
|
#if defined(APSTUDIO_INVOKED) || defined(_NSIS_CONFIG_VERIFYDIALOG)
|
||||||
#if defined(APSTUDIO_INVOKED)
|
#if defined(APSTUDIO_INVOKED)
|
||||||
IDD_VERIFY$(_NSIS_CONFIG_VERIFYDIALOG) DIALOGEX DISCARDABLE 0, 0, 162, 22
|
IDD_VERIFY$(_NSIS_CONFIG_VERIFYDIALOG) DIALOGEX 0, 0, 162, 22
|
||||||
#else
|
#else
|
||||||
IDD_VERIFY DIALOGEX DISCARDABLE 0, 0, 162, 22
|
IDD_VERIFY DIALOGEX 0, 0, 162, 22
|
||||||
#endif
|
#endif
|
||||||
STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE
|
STYLE DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
CTEXT "",IDC_STR,7,7,148,8
|
CTEXT "",IDC_STR,7,7,148,8
|
||||||
END
|
END
|
||||||
|
|
|
@ -1,33 +1,22 @@
|
||||||
#ifdef NSIS_SUPPORT_NAMED_USERVARS
|
#ifdef NSIS_SUPPORT_NAMED_USERVARS
|
||||||
extern NSIS_STRING g_usrvars[TOTAL_COMPATIBLE_STATIC_VARS_COUNT];
|
extern NSIS_STRING g_usrvars[TOTAL_COMPATIBLE_STATIC_VARS_COUNT];
|
||||||
#define state_command_line g_usrvars[20]
|
|
||||||
#define state_install_directory g_usrvars[21]
|
|
||||||
#define state_output_directory g_usrvars[22]
|
|
||||||
#define state_exe_directory g_usrvars[23]
|
|
||||||
#define state_language g_usrvars[24]
|
|
||||||
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT
|
|
||||||
#define state_plugins_dir g_usrvars[25]
|
|
||||||
#endif
|
|
||||||
#define state_temp_dir g_usrvars[32]
|
|
||||||
#else
|
#else
|
||||||
extern char temp_directory[NSIS_MAX_STRLEN];
|
|
||||||
extern char g_usrvars[USER_VARS_COUNT][NSIS_MAX_STRLEN];
|
extern char g_usrvars[USER_VARS_COUNT][NSIS_MAX_STRLEN];
|
||||||
extern char *state_command_line;
|
#endif
|
||||||
extern char *state_install_directory;
|
|
||||||
extern char *state_output_directory;
|
#define state_command_line g_usrvars[20]
|
||||||
extern char *state_exe_directory;
|
#define state_install_directory g_usrvars[21]
|
||||||
extern char *state_language;
|
#define state_output_directory g_usrvars[22]
|
||||||
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT
|
#define state_exe_directory g_usrvars[23]
|
||||||
extern char *state_plugins_dir;
|
#define state_language g_usrvars[24]
|
||||||
#endif
|
#define state_temp_dir g_usrvars[25]
|
||||||
#define state_temp_dir temp_directory
|
#define state_click_next g_usrvars[26]
|
||||||
|
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT
|
||||||
|
#define state_plugins_dir g_usrvars[27]
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern char g_caption[NSIS_MAX_STRLEN*2];
|
extern char g_caption[NSIS_MAX_STRLEN*2];
|
||||||
extern HWND g_hwnd;
|
extern HWND g_hwnd;
|
||||||
extern int g_filehdrsize;
|
|
||||||
extern HANDLE g_hInstance;
|
extern HANDLE g_hInstance;
|
||||||
extern HWND insthwnd,insthwndbutton;
|
extern HWND insthwnd,insthwndbutton;
|
||||||
extern HICON g_hIcon;
|
extern HICON g_hIcon;
|
||||||
|
|
||||||
extern int inst_flags;
|
|
|
@ -1,29 +1,11 @@
|
||||||
#ifndef _UI_H_
|
#ifndef _UI_H_
|
||||||
#define _UI_H_
|
#define _UI_H_
|
||||||
|
|
||||||
// Added by Amir Szekely 3rd August 2002
|
extern int *cur_langtable;
|
||||||
extern char *language_tables;
|
|
||||||
extern int *cur_language_table;
|
|
||||||
|
|
||||||
int NSISCALL ui_doinstall(void);
|
int NSISCALL ui_doinstall(void);
|
||||||
void NSISCALL update_status_text_from_lang(int id, const char *text2);
|
void NSISCALL update_status_text(int strtab, const char *text2);
|
||||||
void NSISCALL update_status_text(const char *text1, const char *text2);
|
|
||||||
extern int ui_st_updateflag;
|
extern int ui_st_updateflag;
|
||||||
extern int num_sections;
|
|
||||||
|
|
||||||
//extern int g_autoclose;
|
|
||||||
extern void *g_inst_combinedheader;
|
|
||||||
extern page *g_inst_page;
|
|
||||||
extern section *g_inst_section;
|
|
||||||
extern entry *g_inst_entry;
|
|
||||||
|
|
||||||
#define g_inst_header ((header *)g_inst_combinedheader)
|
|
||||||
#define g_inst_cmnheader ((common_header *)g_inst_combinedheader)
|
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
|
|
||||||
#define g_inst_uninstheader ((uninstall_header *)g_inst_combinedheader)
|
|
||||||
extern int g_is_uninstaller;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_LOG
|
#ifdef NSIS_CONFIG_LOG
|
||||||
void NSISCALL build_g_logfile(void);
|
void NSISCALL build_g_logfile(void);
|
||||||
|
|
|
@ -37,6 +37,7 @@ char g_log_file[1024];
|
||||||
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT
|
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT
|
||||||
char *state_plugins_dir=g_usrvars[25];
|
char *state_plugins_dir=g_usrvars[25];
|
||||||
#endif
|
#endif
|
||||||
|
char *state_plugins_dir=g_usrvars[36];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
HANDLE g_hInstance;
|
HANDLE g_hInstance;
|
||||||
|
@ -109,7 +110,7 @@ void NSISCALL doRMDir(char *buf, int flags) // 1 - recurse, 2 - rebootok
|
||||||
else if (!RemoveDirectory(buf) && flags&2) {
|
else if (!RemoveDirectory(buf) && flags&2) {
|
||||||
log_printf2("Remove folder on reboot: %s",buf);
|
log_printf2("Remove folder on reboot: %s",buf);
|
||||||
#ifdef NSIS_SUPPORT_REBOOT
|
#ifdef NSIS_SUPPORT_REBOOT
|
||||||
g_flags.exec_reboot++;
|
g_exec_flags.exec_reboot++;
|
||||||
#endif
|
#endif
|
||||||
MoveFileOnReboot(buf,0);
|
MoveFileOnReboot(buf,0);
|
||||||
}
|
}
|
||||||
|
@ -163,7 +164,7 @@ int NSISCALL is_valid_instpath(char *s)
|
||||||
{
|
{
|
||||||
int ivp=0;
|
int ivp=0;
|
||||||
// if CH_FLAGS_NO_ROOT_DIR is set, req is 0, which means rootdirs are not allowed.
|
// if CH_FLAGS_NO_ROOT_DIR is set, req is 0, which means rootdirs are not allowed.
|
||||||
int req=!(inst_flags&CH_FLAGS_NO_ROOT_DIR);
|
int req=!(g_flags&CH_FLAGS_NO_ROOT_DIR);
|
||||||
if (*(WORD*)s == CHAR2_TO_WORD('\\','\\')) // \\ path
|
if (*(WORD*)s == CHAR2_TO_WORD('\\','\\')) // \\ path
|
||||||
{
|
{
|
||||||
if (lastchar(s)!='\\') ivp++;
|
if (lastchar(s)!='\\') ivp++;
|
||||||
|
@ -243,7 +244,7 @@ char * NSISCALL my_GetTempFileName(char *buf, const char *dir)
|
||||||
BOOL NSISCALL MoveFileOnReboot(LPCTSTR pszExisting, LPCTSTR pszNew)
|
BOOL NSISCALL MoveFileOnReboot(LPCTSTR pszExisting, LPCTSTR pszNew)
|
||||||
{
|
{
|
||||||
BOOL fOk = 0;
|
BOOL fOk = 0;
|
||||||
HMODULE hLib=LoadLibrary("kernel32.dll");
|
HMODULE hLib=GetModuleHandle("kernel32.dll");
|
||||||
if (hLib)
|
if (hLib)
|
||||||
{
|
{
|
||||||
typedef BOOL (WINAPI *mfea_t)(LPCSTR lpExistingFileName,LPCSTR lpNewFileName,DWORD dwFlags);
|
typedef BOOL (WINAPI *mfea_t)(LPCSTR lpExistingFileName,LPCSTR lpNewFileName,DWORD dwFlags);
|
||||||
|
@ -253,7 +254,6 @@ BOOL NSISCALL MoveFileOnReboot(LPCTSTR pszExisting, LPCTSTR pszNew)
|
||||||
{
|
{
|
||||||
fOk=mfea(pszExisting, pszNew, MOVEFILE_DELAY_UNTIL_REBOOT|MOVEFILE_REPLACE_EXISTING);
|
fOk=mfea(pszExisting, pszNew, MOVEFILE_DELAY_UNTIL_REBOOT|MOVEFILE_REPLACE_EXISTING);
|
||||||
}
|
}
|
||||||
FreeLibrary(hLib);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fOk)
|
if (!fOk)
|
||||||
|
@ -270,7 +270,7 @@ BOOL NSISCALL MoveFileOnReboot(LPCTSTR pszExisting, LPCTSTR pszNew)
|
||||||
|
|
||||||
if (pszNew) {
|
if (pszNew) {
|
||||||
// create the file if it's not already there to prevent GetShortPathName from failing
|
// create the file if it's not already there to prevent GetShortPathName from failing
|
||||||
CloseHandle(myOpenFile(pszNew, 0, CREATE_NEW));
|
CloseHandle(myOpenFile(pszNew,0,CREATE_NEW));
|
||||||
GetShortPathName(pszNew,tmpbuf,1024);
|
GetShortPathName(pszNew,tmpbuf,1024);
|
||||||
}
|
}
|
||||||
// wininit is used as a temporary here
|
// wininit is used as a temporary here
|
||||||
|
@ -307,11 +307,11 @@ BOOL NSISCALL MoveFileOnReboot(LPCTSTR pszExisting, LPCTSTR pszNew)
|
||||||
char *pszNextSec = mystrstr(pszFirstRenameLine,"\n[");
|
char *pszNextSec = mystrstr(pszFirstRenameLine,"\n[");
|
||||||
if (pszNextSec)
|
if (pszNextSec)
|
||||||
{
|
{
|
||||||
int l=dwFileSize - (pszNextSec - pszWinInit);
|
char *p = ++pszNextSec;
|
||||||
void* data=(void*)my_GlobalAlloc(l);
|
while (p < pszWinInit + dwFileSize) {
|
||||||
mini_memcpy(data, pszNextSec, l);
|
p[cchRenameLine] = *p;
|
||||||
mini_memcpy(pszNextSec + cchRenameLine, data, l);
|
p++;
|
||||||
GlobalFree((HGLOBAL)data);
|
}
|
||||||
|
|
||||||
dwRenameLinePos = pszNextSec - pszWinInit;
|
dwRenameLinePos = pszNextSec - pszWinInit;
|
||||||
}
|
}
|
||||||
|
@ -351,21 +351,11 @@ void NSISCALL myRegGetStr(HKEY root, const char *sub, const char *name, char *ou
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char ps_tmpbuf[NSIS_MAX_STRLEN*2];
|
void NSISCALL myitoa(char *s, int d)
|
||||||
|
|
||||||
char * NSISCALL process_string_fromtab(char *out, int offs)
|
|
||||||
{
|
{
|
||||||
#ifdef NSIS_SUPPORT_LANG_IN_STRINGS
|
wsprintf(s,"%d",d);
|
||||||
char *p=process_string(GetStringFromStringTab(offs), 0);
|
|
||||||
#else
|
|
||||||
char *p=process_string(GetStringFromStringTab(offs));
|
|
||||||
#endif
|
|
||||||
if (!out) return p;
|
|
||||||
return lstrcpyn(out,p,NSIS_MAX_STRLEN);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NSISCALL myitoa(char *s, int d) { wsprintf(s,"%d",d); }
|
|
||||||
|
|
||||||
int NSISCALL myatoi(char *s)
|
int NSISCALL myatoi(char *s)
|
||||||
{
|
{
|
||||||
unsigned int v=0;
|
unsigned int v=0;
|
||||||
|
@ -419,18 +409,20 @@ int NSISCALL mystrlen(const char *in)
|
||||||
return lstrlen(in);
|
return lstrlen(in);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dave Laundon's simplified process_string
|
char ps_tmpbuf[NSIS_MAX_STRLEN*2];
|
||||||
#ifdef NSIS_SUPPORT_LANG_IN_STRINGS
|
|
||||||
char * NSISCALL process_string(const char *in, int iStartIdx )
|
// Based on Dave Laundon's simplified process_string
|
||||||
#else
|
char * NSISCALL GetNSISString(char *outbuf, int strtab)
|
||||||
char * NSISCALL process_string(const char *in)
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
#ifdef NSIS_SUPPORT_LANG_IN_STRINGS
|
char *in = (char*)GetNSISStringNP(GetNSISTab(strtab));
|
||||||
char *out = ps_tmpbuf+iStartIdx;
|
char *out;
|
||||||
#else
|
if (outbuf >= ps_tmpbuf && outbuf < ps_tmpbuf+sizeof(ps_tmpbuf))
|
||||||
char *out = ps_tmpbuf;
|
{
|
||||||
#endif
|
out = outbuf;
|
||||||
|
outbuf = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
out = ps_tmpbuf;
|
||||||
while (*in && out - ps_tmpbuf < NSIS_MAX_STRLEN)
|
while (*in && out - ps_tmpbuf < NSIS_MAX_STRLEN)
|
||||||
{
|
{
|
||||||
int nVarIdx = (unsigned char)*in++;
|
int nVarIdx = (unsigned char)*in++;
|
||||||
|
@ -446,9 +438,9 @@ char * NSISCALL process_string(const char *in)
|
||||||
#ifdef NSIS_SUPPORT_LANG_IN_STRINGS
|
#ifdef NSIS_SUPPORT_LANG_IN_STRINGS
|
||||||
else if (nVarIdx == LANG_CODES_START)
|
else if (nVarIdx == LANG_CODES_START)
|
||||||
{
|
{
|
||||||
nVarIdx = *(short*)in; in+=sizeof(WORD);
|
nVarIdx = *(short*)in; in+=sizeof(short);
|
||||||
process_string(GetStringFromStringTab(nVarIdx), out-ps_tmpbuf);
|
GetNSISString(out, nVarIdx);
|
||||||
out+=mystrlen(out);
|
out+=mystrlen(out);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else
|
else
|
||||||
|
@ -485,22 +477,24 @@ char * NSISCALL process_string(const char *in)
|
||||||
case VAR_CODES_START + 23: // OUTDIR
|
case VAR_CODES_START + 23: // OUTDIR
|
||||||
case VAR_CODES_START + 24: // EXEDIR
|
case VAR_CODES_START + 24: // EXEDIR
|
||||||
case VAR_CODES_START + 25: // LANGUAGE
|
case VAR_CODES_START + 25: // LANGUAGE
|
||||||
case VAR_CODES_START + 26: // PLUGINSDIR
|
case VAR_CODES_START + 26: // TEMP
|
||||||
|
case VAR_CODES_START + 27: // _CLICK
|
||||||
|
case VAR_CODES_START + 28: // PLUGINSDIR
|
||||||
mystrcpy(out, g_usrvars[nVarIdx - (VAR_CODES_START + 1)]);
|
mystrcpy(out, g_usrvars[nVarIdx - (VAR_CODES_START + 1)]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VAR_CODES_START + 27: // PROGRAMFILES
|
case VAR_CODES_START + 29: // PROGRAMFILES
|
||||||
smwcvesf[41]=0;
|
smwcvesf[41]=0;
|
||||||
myRegGetStr(HKEY_LOCAL_MACHINE, smwcvesf, "ProgramFilesDir", out);
|
myRegGetStr(HKEY_LOCAL_MACHINE, smwcvesf, "ProgramFilesDir", out);
|
||||||
if (!*out)
|
if (!*out)
|
||||||
mystrcpy(out, "C:\\Program Files");
|
mystrcpy(out, "C:\\Program Files");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VAR_CODES_START + 28: // SMPROGRAMS
|
case VAR_CODES_START + 30: // SMPROGRAMS
|
||||||
case VAR_CODES_START + 29: // SMSTARTUP
|
case VAR_CODES_START + 31: // SMSTARTUP
|
||||||
case VAR_CODES_START + 30: // DESKTOP
|
case VAR_CODES_START + 32: // DESKTOP
|
||||||
case VAR_CODES_START + 31: // STARTMENU
|
case VAR_CODES_START + 33: // STARTMENU
|
||||||
case VAR_CODES_START + 32: // QUICKLAUNCH
|
case VAR_CODES_START + 34: // QUICKLAUNCH
|
||||||
{
|
{
|
||||||
static const char *tab[]={
|
static const char *tab[]={
|
||||||
"Programs",
|
"Programs",
|
||||||
|
@ -510,9 +504,9 @@ char * NSISCALL process_string(const char *in)
|
||||||
"AppData"
|
"AppData"
|
||||||
};
|
};
|
||||||
static char name[20]="Common ";
|
static char name[20]="Common ";
|
||||||
const char *name_=tab[nVarIdx-(VAR_CODES_START+28)];
|
const char *name_=tab[nVarIdx-(VAR_CODES_START+30)];
|
||||||
mystrcpy(name+7,name_);
|
mystrcpy(name+7,name_);
|
||||||
f=g_flags.all_user_var & (nVarIdx != VAR_CODES_START + 32);
|
f=g_exec_flags.all_user_var & (nVarIdx != VAR_CODES_START + 34);
|
||||||
|
|
||||||
again:
|
again:
|
||||||
|
|
||||||
|
@ -529,7 +523,7 @@ char * NSISCALL process_string(const char *in)
|
||||||
mystrcpy(out,temp_directory);
|
mystrcpy(out,temp_directory);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nVarIdx == VAR_CODES_START + 32) {
|
if (nVarIdx == VAR_CODES_START + 34) {
|
||||||
lstrcat(out, "\\Microsoft\\Internet Explorer\\Quick Launch");
|
lstrcat(out, "\\Microsoft\\Internet Explorer\\Quick Launch");
|
||||||
f = GetFileAttributes(out);
|
f = GetFileAttributes(out);
|
||||||
if (f != (DWORD)-1 && (f & FILE_ATTRIBUTE_DIRECTORY))
|
if (f != (DWORD)-1 && (f & FILE_ATTRIBUTE_DIRECTORY))
|
||||||
|
@ -538,24 +532,25 @@ char * NSISCALL process_string(const char *in)
|
||||||
else break;
|
else break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case VAR_CODES_START + 33: // TEMP
|
case VAR_CODES_START + 35: // TEMP
|
||||||
mystrcpy(out,temp_directory);
|
mystrcpy(out,temp_directory);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VAR_CODES_START + 34: // WINDIR
|
case VAR_CODES_START + 36: // WINDIR
|
||||||
GetWindowsDirectory(out, NSIS_MAX_STRLEN);
|
GetWindowsDirectory(out, NSIS_MAX_STRLEN);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VAR_CODES_START + 35: // SYSDIR
|
case VAR_CODES_START + 37: // SYSDIR
|
||||||
GetSystemDirectory(out, NSIS_MAX_STRLEN);
|
GetSystemDirectory(out, NSIS_MAX_STRLEN);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if VAR_CODES_START + 35 >= 255
|
#if VAR_CODES_START + 37 >= 255
|
||||||
#error "Too many variables! Extend VAR_CODES_START!"
|
#error "Too many variables! Extend VAR_CODES_START!"
|
||||||
#endif
|
#endif
|
||||||
} // switch
|
} // switch
|
||||||
// validate the directory name
|
// validate the directory name
|
||||||
if (nVarIdx > 21+VAR_CODES_START ) { // only if not $0 to $R9, $CMDLINE, or $HWNDPARENT
|
if (nVarIdx > 21+VAR_CODES_START && nVarIdx != VAR_CODES_START+27) {
|
||||||
|
// only if not $0 to $R9, $CMDLINE, $HWNDPARENT, or $_CLICK
|
||||||
// ($LANGUAGE can't have trailing backslash anyway...)
|
// ($LANGUAGE can't have trailing backslash anyway...)
|
||||||
validate_filename(out);
|
validate_filename(out);
|
||||||
}
|
}
|
||||||
|
@ -574,18 +569,18 @@ char * NSISCALL process_string(const char *in)
|
||||||
nVarIdx = (*(WORD*)in & 0x0FFF)-1; in+=sizeof(WORD);
|
nVarIdx = (*(WORD*)in & 0x0FFF)-1; in+=sizeof(WORD);
|
||||||
switch (nVarIdx) // The order of this list must match that in ..\strlist.cpp (err, build.cpp -J)
|
switch (nVarIdx) // The order of this list must match that in ..\strlist.cpp (err, build.cpp -J)
|
||||||
{
|
{
|
||||||
case 26: // PROGRAMFILES
|
case 28: // PROGRAMFILES
|
||||||
smwcvesf[41]=0;
|
smwcvesf[41]=0;
|
||||||
myRegGetStr(HKEY_LOCAL_MACHINE, smwcvesf, "ProgramFilesDir", out);
|
myRegGetStr(HKEY_LOCAL_MACHINE, smwcvesf, "ProgramFilesDir", out);
|
||||||
if (!*out)
|
if (!*out)
|
||||||
mystrcpy(out, "C:\\Program Files");
|
mystrcpy(out, "C:\\Program Files");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 27: // SMPROGRAMS
|
case 29: // SMPROGRAMS
|
||||||
case 28: // SMSTARTUP
|
case 30: // SMSTARTUP
|
||||||
case 29: // DESKTOP
|
case 31: // DESKTOP
|
||||||
case 30: // STARTMENU
|
case 32: // STARTMENU
|
||||||
case 31: // QUICKLAUNCH
|
case 33: // QUICKLAUNCH
|
||||||
{
|
{
|
||||||
static const char *tab[]={
|
static const char *tab[]={
|
||||||
"Programs",
|
"Programs",
|
||||||
|
@ -595,9 +590,9 @@ char * NSISCALL process_string(const char *in)
|
||||||
"AppData"
|
"AppData"
|
||||||
};
|
};
|
||||||
static char name[20]="Common ";
|
static char name[20]="Common ";
|
||||||
const char *name_=tab[nVarIdx-27];
|
const char *name_=tab[nVarIdx-29];
|
||||||
mystrcpy(name+7,name_);
|
mystrcpy(name+7,name_);
|
||||||
f=g_flags.all_user_var & (nVarIdx != 31);
|
f=g_exec_flags.all_user_var & (nVarIdx != 33);
|
||||||
|
|
||||||
again:
|
again:
|
||||||
|
|
||||||
|
@ -614,7 +609,7 @@ char * NSISCALL process_string(const char *in)
|
||||||
mystrcpy(out,state_temp_dir);
|
mystrcpy(out,state_temp_dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nVarIdx == 31) {
|
if (nVarIdx == 33) {
|
||||||
lstrcat(out, "\\Microsoft\\Internet Explorer\\Quick Launch");
|
lstrcat(out, "\\Microsoft\\Internet Explorer\\Quick Launch");
|
||||||
f = GetFileAttributes(out);
|
f = GetFileAttributes(out);
|
||||||
if (f != (DWORD)-1 && (f & FILE_ATTRIBUTE_DIRECTORY))
|
if (f != (DWORD)-1 && (f & FILE_ATTRIBUTE_DIRECTORY))
|
||||||
|
@ -623,15 +618,15 @@ char * NSISCALL process_string(const char *in)
|
||||||
else break;
|
else break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 33: // WINDIR
|
case 34: // WINDIR
|
||||||
GetWindowsDirectory(out, NSIS_MAX_STRLEN);
|
GetWindowsDirectory(out, NSIS_MAX_STRLEN);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 34: // SYSDIR
|
case 35: // SYSDIR
|
||||||
GetSystemDirectory(out, NSIS_MAX_STRLEN);
|
GetSystemDirectory(out, NSIS_MAX_STRLEN);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 35: // HWNDPARENT
|
case 36: // HWNDPARENT
|
||||||
myitoa(out, (unsigned int)g_hwnd);
|
myitoa(out, (unsigned int)g_hwnd);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -639,17 +634,18 @@ char * NSISCALL process_string(const char *in)
|
||||||
mystrcpy(out, g_usrvars[nVarIdx]);
|
mystrcpy(out, g_usrvars[nVarIdx]);
|
||||||
} // switch
|
} // switch
|
||||||
// validate the directory name
|
// validate the directory name
|
||||||
if (nVarIdx > 21 && nVarIdx < TOTAL_COMPATIBLE_STATIC_VARS_COUNT ) { // only if not $0 to $R9, $CMDLINE, or $HWNDPARENT and not great than $SYSDIR
|
if (nVarIdx > 20 && nVarIdx < TOTAL_COMPATIBLE_STATIC_VARS_COUNT && nVarIdx != 26) {
|
||||||
|
// only if not $0 to $R9, $CMDLINE or $_CLICK and not great than $HWNDPARENT
|
||||||
// ($LANGUAGE can't have trailing backslash anyway...)
|
// ($LANGUAGE can't have trailing backslash anyway...)
|
||||||
validate_filename(out);
|
validate_filename(out);
|
||||||
}
|
}
|
||||||
out+=mystrlen(out);
|
out+=mystrlen(out);
|
||||||
} // == VAR_CODES_START
|
} // == VAR_CODES_START
|
||||||
#ifdef NSIS_SUPPORT_LANG_IN_STRINGS
|
#ifdef NSIS_SUPPORT_LANG_IN_STRINGS
|
||||||
else if ( nVarIdx == LANG_CODES_START )
|
else if (nVarIdx == LANG_CODES_START)
|
||||||
{
|
{
|
||||||
nVarIdx = *(short*)in; in+=sizeof(WORD);
|
nVarIdx = *(short*)in; in+=sizeof(short);
|
||||||
process_string(GetStringFromStringTab(nVarIdx), out-ps_tmpbuf);
|
GetNSISString(out, nVarIdx);
|
||||||
out+=mystrlen(out);
|
out+=mystrlen(out);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -660,6 +656,8 @@ char * NSISCALL process_string(const char *in)
|
||||||
#endif
|
#endif
|
||||||
} // while
|
} // while
|
||||||
*out = 0;
|
*out = 0;
|
||||||
|
if (outbuf)
|
||||||
|
return lstrcpyn(outbuf, ps_tmpbuf, NSIS_MAX_STRLEN);
|
||||||
return ps_tmpbuf;
|
return ps_tmpbuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
extern char ps_tmpbuf[NSIS_MAX_STRLEN*2];
|
extern char ps_tmpbuf[NSIS_MAX_STRLEN*2];
|
||||||
#ifdef NSIS_SUPPORT_LANG_IN_STRINGS
|
char * NSISCALL GetNSISString(char *outbuf, int strtab);
|
||||||
char * NSISCALL process_string(const char *in, int iStartIdx);
|
#define GetNSISStringTT(strtab) GetNSISString(0, (strtab))
|
||||||
#else
|
#define GetNSISStringNP(strtab) ((const char *)g_blocks[NB_STRINGS].offset+(strtab))
|
||||||
char * NSISCALL process_string(const char *in);
|
#define GetNSISTab(strtab) (strtab < 0 ? LANG_STR_TAB(strtab) : strtab)
|
||||||
#endif
|
|
||||||
char * NSISCALL process_string_fromtab(char *out, int offs);
|
|
||||||
void NSISCALL myRegGetStr(HKEY root, const char *sub, const char *name, char *out);
|
void NSISCALL myRegGetStr(HKEY root, const char *sub, const char *name, char *out);
|
||||||
int NSISCALL myatoi(char *s);
|
int NSISCALL myatoi(char *s);
|
||||||
void NSISCALL myitoa(char *s, int d);
|
void NSISCALL myitoa(char *s, int d);
|
||||||
|
|
1263
Source/lang.cpp
1263
Source/lang.cpp
File diff suppressed because it is too large
Load diff
249
Source/lang.h
249
Source/lang.h
|
@ -1,86 +1,188 @@
|
||||||
// Lang.h by Amir Szekely 3rd August 2002
|
|
||||||
|
|
||||||
#ifndef ___NLF___H_____
|
#ifndef ___NLF___H_____
|
||||||
#define ___NLF___H_____
|
#define ___NLF___H_____
|
||||||
|
|
||||||
#include "exehead/fileform.h"
|
#include "exehead/fileform.h"
|
||||||
#include <StdExcept>
|
|
||||||
using namespace std;
|
struct NLFRef {
|
||||||
|
int iRef;
|
||||||
|
int iUnRef;
|
||||||
|
};
|
||||||
|
|
||||||
struct langstring {
|
struct langstring {
|
||||||
int name;
|
int name;
|
||||||
|
int sn;
|
||||||
int index;
|
int index;
|
||||||
|
int uindex;
|
||||||
|
int process;
|
||||||
};
|
};
|
||||||
|
|
||||||
class LangStringList : public SortedStringListND<struct langstring>
|
class LangStringList : public SortedStringListND<struct langstring>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LangStringList()
|
LangStringList() {
|
||||||
{
|
count = 0;
|
||||||
index = 0;
|
|
||||||
}
|
}
|
||||||
~LangStringList() { }
|
~LangStringList() { }
|
||||||
|
|
||||||
int add(const char *name)
|
int add(const char *name, int *sn=0)
|
||||||
{
|
{
|
||||||
int pos=SortedStringListND<struct langstring>::add(name);
|
int pos = SortedStringListND<struct langstring>::add(name);
|
||||||
if (pos == -1) return -1;
|
if (pos == -1) return -1;
|
||||||
|
|
||||||
((struct langstring*)gr.get())[pos].index = index;
|
((struct langstring*)gr.get())[pos].sn = count;
|
||||||
|
if (sn) *sn = count;
|
||||||
|
count++;
|
||||||
|
((struct langstring*)gr.get())[pos].index = -1;
|
||||||
|
((struct langstring*)gr.get())[pos].uindex = -1;
|
||||||
|
((struct langstring*)gr.get())[pos].process = 1;
|
||||||
|
|
||||||
int temp = index;
|
return pos;
|
||||||
index++;
|
|
||||||
|
|
||||||
return temp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int get(char *name)
|
int get(char *name, int *sn=0, int *index=0, int *uindex=0, int *process=0)
|
||||||
{
|
{
|
||||||
|
if (index) *index = -1;
|
||||||
|
if (uindex) *uindex = -1;
|
||||||
|
if (sn) *sn = -1;
|
||||||
int v=SortedStringListND<struct langstring>::find(name);
|
int v=SortedStringListND<struct langstring>::find(name);
|
||||||
if (v==-1) return -1;
|
if (v==-1) return -1;
|
||||||
return ((struct langstring*)gr.get())[v].index;
|
if (index) *index = ((struct langstring*)gr.get())[v].index;
|
||||||
|
if (uindex) *uindex = ((struct langstring*)gr.get())[v].uindex;
|
||||||
|
if (sn) *sn = ((struct langstring*)gr.get())[v].sn;
|
||||||
|
if (process) *process = ((struct langstring*)gr.get())[v].process;
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set(int pos, int index=-1, int uindex=-1, int process=-1)
|
||||||
|
{
|
||||||
|
if ((unsigned int)pos > (gr.getlen() / sizeof(struct langstring)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
struct langstring *data=(struct langstring *)gr.get();
|
||||||
|
|
||||||
|
if (index >= 0)
|
||||||
|
data[pos].index = index;
|
||||||
|
if (uindex >= 0)
|
||||||
|
data[pos].uindex = uindex;
|
||||||
|
if (process >= 0)
|
||||||
|
data[pos].process = process;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set(char *name, int index, int uindex=-1, int process=-1)
|
||||||
|
{
|
||||||
|
set(get(name), index, uindex, process);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *pos2name(int pos)
|
||||||
|
{
|
||||||
|
struct langstring *data=(struct langstring *)gr.get();
|
||||||
|
|
||||||
|
if ((unsigned int)pos > (gr.getlen() / sizeof(struct langstring)))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return ((const char*)strings.get() + data[pos].name);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *offset2name(int name)
|
||||||
|
{
|
||||||
|
if ((unsigned int)name > strings.getlen())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return (const char*)strings.get() + name;
|
||||||
}
|
}
|
||||||
|
|
||||||
int getnum()
|
int getnum()
|
||||||
{
|
{
|
||||||
return index;
|
return gr.getlen() / sizeof(struct langstring);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *idx2name(int idx)
|
static int compare_index(const void *item1, const void *item2)
|
||||||
{
|
{
|
||||||
struct langstring *data=(struct langstring *)gr.get();
|
struct langstring *ls1 = (struct langstring *)item1;
|
||||||
|
struct langstring *ls2 = (struct langstring *)item2;
|
||||||
for (int i = 0; i < index; i++)
|
|
||||||
{
|
|
||||||
if (data[i].index == idx)
|
|
||||||
{
|
|
||||||
return ((char*)strings.get() + data[i].name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
return ls1->index - ls2->index;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct langstring *sort_index(int *num)
|
||||||
|
{
|
||||||
|
if (!num) return 0;
|
||||||
|
sortbuf.resize(0);
|
||||||
|
sortbuf.add(gr.get(), gr.getlen());
|
||||||
|
*num = sortbuf.getlen() / sizeof(struct langstring);
|
||||||
|
qsort(sortbuf.get(), *num, sizeof(struct langstring), compare_index);
|
||||||
|
return (struct langstring*) sortbuf.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
static int compare_uindex(const void *item1, const void *item2)
|
||||||
|
{
|
||||||
|
struct langstring *ls1 = (struct langstring *)item1;
|
||||||
|
struct langstring *ls2 = (struct langstring *)item2;
|
||||||
|
|
||||||
|
return ls1->uindex - ls2->uindex;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct langstring *sort_uindex(int *num)
|
||||||
|
{
|
||||||
|
if (!num) return 0;
|
||||||
|
sortbuf.resize(0);
|
||||||
|
sortbuf.add(gr.get(), gr.getlen());
|
||||||
|
*num = sortbuf.getlen() / sizeof(struct langstring);
|
||||||
|
qsort(sortbuf.get(), *num, sizeof(struct langstring), compare_uindex);
|
||||||
|
return (struct langstring*) sortbuf.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int index;
|
int count;
|
||||||
|
TinyGrowBuf sortbuf;
|
||||||
};
|
};
|
||||||
|
|
||||||
class NLF;
|
class StringsArray
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
TinyGrowBuf offsets;
|
||||||
|
GrowBuf strings;
|
||||||
|
|
||||||
struct StringTable {
|
public:
|
||||||
LANGID lang_id;
|
StringsArray()
|
||||||
int dlg_offset;
|
{
|
||||||
common_strings common;
|
offsets.set_zeroing(1);
|
||||||
common_strings ucommon;
|
|
||||||
installer_strings installer;
|
|
||||||
uninstall_strings uninstall;
|
|
||||||
TinyGrowBuf user_strings;
|
|
||||||
TinyGrowBuf user_ustrings;
|
|
||||||
|
|
||||||
NLF *nlf;
|
strings.add("", sizeof(""));
|
||||||
|
}
|
||||||
|
|
||||||
|
~StringsArray() { }
|
||||||
|
|
||||||
|
void resize(int num)
|
||||||
|
{
|
||||||
|
offsets.resize(num * sizeof(int));
|
||||||
|
}
|
||||||
|
|
||||||
|
int set(int idx, char *str)
|
||||||
|
{
|
||||||
|
if (idx < 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (idx >= (offsets.getlen() / sizeof(int)))
|
||||||
|
resize(idx+1);
|
||||||
|
|
||||||
|
int old = ((int*)offsets.get())[idx];
|
||||||
|
|
||||||
|
((int*)offsets.get())[idx] = strings.add(str, strlen(str) + 1);
|
||||||
|
|
||||||
|
return old;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *get(int idx)
|
||||||
|
{
|
||||||
|
if ((unsigned int)idx >= (offsets.getlen() / sizeof(int)))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return (const char *)strings.get() + ((int*)offsets.get())[idx];
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NLF_VERSION 5
|
#define NLF_VERSION 6
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
NLF_BRANDING,
|
NLF_BRANDING,
|
||||||
|
@ -91,6 +193,8 @@ enum {
|
||||||
NLF_SUBCAPTION_DIR,
|
NLF_SUBCAPTION_DIR,
|
||||||
NLF_SUBCAPTION_INSTFILES,
|
NLF_SUBCAPTION_INSTFILES,
|
||||||
NLF_SUBCAPTION_COMPLETED,
|
NLF_SUBCAPTION_COMPLETED,
|
||||||
|
NLF_USUBCAPTION_OPTIONS,
|
||||||
|
NLF_USUBCAPTION_DIR,
|
||||||
NLF_USUBCAPTION_CONFIRM,
|
NLF_USUBCAPTION_CONFIRM,
|
||||||
NLF_USUBCAPTION_INSTFILES,
|
NLF_USUBCAPTION_INSTFILES,
|
||||||
NLF_USUBCAPTION_COMPLETED,
|
NLF_USUBCAPTION_COMPLETED,
|
||||||
|
@ -105,15 +209,36 @@ enum {
|
||||||
NLF_BTN_CLOSE,
|
NLF_BTN_CLOSE,
|
||||||
NLF_BTN_BROWSE,
|
NLF_BTN_BROWSE,
|
||||||
NLF_BTN_DETAILS,
|
NLF_BTN_DETAILS,
|
||||||
NLF_DEF_NAME,
|
NLF_CLICK_NEXT,
|
||||||
|
NLF_CLICK_INSTALL,
|
||||||
|
NLF_CLICK_UNINSTALL,
|
||||||
|
NLF_NAME,
|
||||||
NLF_COMPLETED,
|
NLF_COMPLETED,
|
||||||
|
NLF_LICENSE_TEXT,
|
||||||
|
NLF_LICENSE_TEXT_FSCB,
|
||||||
|
NLF_LICENSE_TEXT_FSRB,
|
||||||
|
NLF_ULICENSE_TEXT,
|
||||||
|
NLF_ULICENSE_TEXT_FSCB,
|
||||||
|
NLF_ULICENSE_TEXT_FSRB,
|
||||||
|
NLF_LICENSE_DATA, // virtual
|
||||||
NLF_COMP_CUSTOM,
|
NLF_COMP_CUSTOM,
|
||||||
|
NLF_COMP_TEXT,
|
||||||
NLF_COMP_SUBTEXT1,
|
NLF_COMP_SUBTEXT1,
|
||||||
NLF_COMP_SUBTEXT1_NO_INST_TYPES,
|
NLF_COMP_SUBTEXT1_NO_INST_TYPES,
|
||||||
NLF_COMP_SUBTEXT2,
|
NLF_COMP_SUBTEXT2,
|
||||||
|
NLF_UCOMP_TEXT,
|
||||||
|
NLF_UCOMP_SUBTEXT1,
|
||||||
|
NLF_UCOMP_SUBTEXT1_NO_INST_TYPES,
|
||||||
|
NLF_UCOMP_SUBTEXT2,
|
||||||
|
NLF_DIR_TEXT,
|
||||||
NLF_DIR_SUBTEXT,
|
NLF_DIR_SUBTEXT,
|
||||||
|
NLF_DIR_BROWSETEXT,
|
||||||
|
NLF_UDIR_TEXT,
|
||||||
|
NLF_UDIR_SUBTEXT,
|
||||||
|
NLF_UDIR_BROWSETEXT,
|
||||||
NLF_SPACE_AVAIL,
|
NLF_SPACE_AVAIL,
|
||||||
NLF_SPACE_REQ,
|
NLF_SPACE_REQ,
|
||||||
|
NLF_UNINST_TEXT,
|
||||||
NLF_UNINST_SUBTEXT,
|
NLF_UNINST_SUBTEXT,
|
||||||
NLF_FILE_ERROR,
|
NLF_FILE_ERROR,
|
||||||
NLF_FILE_ERROR_NOIGNORE,
|
NLF_FILE_ERROR_NOIGNORE,
|
||||||
|
@ -150,36 +275,32 @@ enum {
|
||||||
NLF_KILO,
|
NLF_KILO,
|
||||||
NLF_MEGA,
|
NLF_MEGA,
|
||||||
NLF_GIGA,
|
NLF_GIGA,
|
||||||
|
NLF_RTL,
|
||||||
|
|
||||||
NLF_STRINGS,
|
NLF_STRINGS
|
||||||
|
|
||||||
SLANG_NAME,
|
|
||||||
SLANG_COMP_TEXT,
|
|
||||||
SLANG_LICENSE_TEXT,
|
|
||||||
SLANG_LICENSE_DATA,
|
|
||||||
SLANG_DIR_TEXT,
|
|
||||||
SLANG_UNINST_TEXT
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern char *english_strings[NLF_STRINGS];
|
struct NLF {
|
||||||
|
bool m_bLoaded;
|
||||||
// NSIS Language File parser
|
|
||||||
class NLF {
|
|
||||||
public:
|
|
||||||
NLF(char *filename);
|
|
||||||
~NLF();
|
|
||||||
|
|
||||||
char *GetString(int idx);
|
|
||||||
|
|
||||||
char *m_szName;
|
char *m_szName;
|
||||||
|
|
||||||
LANGID m_wLangId;
|
|
||||||
char *m_szFont;
|
char *m_szFont;
|
||||||
int m_iFontSize;
|
int m_iFontSize;
|
||||||
unsigned int m_uCodePage;
|
unsigned int m_uCodePage;
|
||||||
|
bool m_bRTL;
|
||||||
private:
|
|
||||||
char *m_szStrings[NLF_STRINGS];
|
char *m_szStrings[NLF_STRINGS];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct LanguageTable {
|
||||||
|
LANGID lang_id;
|
||||||
|
|
||||||
|
int dlg_offset;
|
||||||
|
|
||||||
|
GrowBuf *strlist;
|
||||||
|
|
||||||
|
StringsArray *lang_strings;
|
||||||
|
|
||||||
|
NLF nlf;
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -214,7 +214,7 @@ int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
fprintf(g_output,"Size of EXE header is %d bytes for zlib, %d bytes for bzip2.\n", zlib_exeheader_size,bzip2_exeheader_size);
|
fprintf(g_output,"Size of EXE header is %d bytes for zlib, %d bytes for bzip2.\n", zlib_exeheader_size,bzip2_exeheader_size);
|
||||||
fprintf(g_output,"Size of info header is %d bytes.\n",sizeof(firstheader));
|
fprintf(g_output,"Size of info header is %d bytes.\n",sizeof(firstheader));
|
||||||
fprintf(g_output,"Size of install header is %d bytes, uninstall header is %d bytes.\n",sizeof(header),sizeof(uninstall_header));
|
fprintf(g_output,"Size of [un]install header is %d bytes,\n",sizeof(header));
|
||||||
fprintf(g_output,"Size of each section is %d bytes.\n",sizeof(section));
|
fprintf(g_output,"Size of each section is %d bytes.\n",sizeof(section));
|
||||||
fprintf(g_output,"Size of each page is %d bytes.\n",sizeof(page));
|
fprintf(g_output,"Size of each page is %d bytes.\n",sizeof(page));
|
||||||
fprintf(g_output,"Size of each instruction is %d bytes.\n",sizeof(entry));
|
fprintf(g_output,"Size of each instruction is %d bytes.\n",sizeof(entry));
|
||||||
|
|
|
@ -69,8 +69,7 @@ LINK32=link.exe
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /GX /O2 /Ob2 /D "_CONSOLE" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "WIN32_LEAN_AND_MEAN" /FD /c
|
# ADD BASE CPP /nologo /W3 /GX /O2 /Ob2 /D "_CONSOLE" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "WIN32_LEAN_AND_MEAN" /FD /c
|
||||||
# SUBTRACT BASE CPP /Fr /YX /Yc /Yu
|
# SUBTRACT BASE CPP /Fr /YX /Yc /Yu
|
||||||
# ADD CPP /nologo /MLd /W3 /GX /ZI /Od /D "_CONSOLE" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "WIN32_LEAN_AND_MEAN" /Fr /FD /c
|
# ADD CPP /nologo /MLd /W3 /GX /ZI /Od /D "_CONSOLE" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "WIN32_LEAN_AND_MEAN" /Fr /FD /Zm200 /c
|
||||||
# SUBTRACT CPP /YX /Yc /Yu
|
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
|
|
2013
Source/script.cpp
2013
Source/script.cpp
File diff suppressed because it is too large
Load diff
|
@ -481,7 +481,7 @@ class MMapBuf : public IGrowBuf
|
||||||
int add(const void *data, int len)
|
int add(const void *data, int len)
|
||||||
{
|
{
|
||||||
if (len<=0) return 0;
|
if (len<=0) return 0;
|
||||||
resize(getlen()+len);
|
resize(getlen()+len);
|
||||||
memcpy((char*)get()+getlen()-len,data,len);
|
memcpy((char*)get()+getlen()-len,data,len);
|
||||||
return getlen()-len;
|
return getlen()-len;
|
||||||
}
|
}
|
||||||
|
@ -507,7 +507,7 @@ class MMapBuf : public IGrowBuf
|
||||||
char buf[MAX_PATH],buf2[MAX_PATH];
|
char buf[MAX_PATH],buf2[MAX_PATH];
|
||||||
GetTempPath(MAX_PATH,buf);
|
GetTempPath(MAX_PATH,buf);
|
||||||
GetTempFileName(buf,"nsd",0,buf2);
|
GetTempFileName(buf,"nsd",0,buf2);
|
||||||
m_hFile=CreateFile(buf2,GENERIC_READ|GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_TEMPORARY|FILE_FLAG_DELETE_ON_CLOSE,NULL);
|
m_hFile=CreateFile(buf2,GENERIC_READ|GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_TEMPORARY|FILE_FLAG_DELETE_ON_CLOSE|FILE_FLAG_SEQUENTIAL_SCAN,NULL);
|
||||||
}
|
}
|
||||||
if (m_hFile != INVALID_HANDLE_VALUE)
|
if (m_hFile != INVALID_HANDLE_VALUE)
|
||||||
m_hFileMap=CreateFileMapping(m_hFile,NULL,PAGE_READWRITE,0,m_alloc,NULL);
|
m_hFileMap=CreateFileMapping(m_hFile,NULL,PAGE_READWRITE,0,m_alloc,NULL);
|
||||||
|
|
|
@ -22,14 +22,14 @@ static tokenType tokenlist[TOK__LAST] =
|
||||||
{TOK_ADDSIZE,"AddSize",1,0,"size_to_add_to_section_in_kb"},
|
{TOK_ADDSIZE,"AddSize",1,0,"size_to_add_to_section_in_kb"},
|
||||||
{TOK_AUTOCLOSE,"AutoCloseWindow",1,0,"(false|true)"},
|
{TOK_AUTOCLOSE,"AutoCloseWindow",1,0,"(false|true)"},
|
||||||
{TOK_BGGRADIENT,"BGGradient",0,3,"(off | [top_color [bottom_color [text_color]]])"},
|
{TOK_BGGRADIENT,"BGGradient",0,3,"(off | [top_color [bottom_color [text_color]]])"},
|
||||||
{TOK_BRANDINGTEXT,"BrandingText",1,2,"[/LANG=lang_id] [/TRIM(LEFT|RIGHT|CENTER)] installer_text"},
|
{TOK_BRANDINGTEXT,"BrandingText",1,1,"[/TRIM(LEFT|RIGHT|CENTER)] installer_text"},
|
||||||
{TOK_BRINGTOFRONT,"BringToFront",0,0,""},
|
{TOK_BRINGTOFRONT,"BringToFront",0,0,""},
|
||||||
{TOK_CALL,"Call",1,0,"function_name | [:label_name]"},
|
{TOK_CALL,"Call",1,0,"function_name | [:label_name]"},
|
||||||
{TOK_CALLINSTDLL,"CallInstDLL",2,1,"dll_path_on_target.dll [/NOUNLOAD] function"},
|
{TOK_CALLINSTDLL,"CallInstDLL",2,1,"dll_path_on_target.dll [/NOUNLOAD] function"},
|
||||||
{TOK_CAPTION,"Caption",1,1,"[/LANG=lang_id] installer_caption"},
|
{TOK_CAPTION,"Caption",1,0,"installer_caption"},
|
||||||
{TOK_CHANGEUI,"ChangeUI",2,1,"/RTL (all|dlg_id) ui_file.exe"},
|
{TOK_CHANGEUI,"ChangeUI",1,1,"[/RTL] (all|dlg_id) ui_file.exe"},
|
||||||
{TOK_CLEARERRORS,"ClearErrors",0,0,""},
|
{TOK_CLEARERRORS,"ClearErrors",0,0,""},
|
||||||
{TOK_COMPTEXT,"ComponentText",0,4,"[/LANG=lang_id] [component_page_description] [component_subtext1] [component_subtext2]"},
|
{TOK_COMPTEXT,"ComponentText",0,3,"[component_page_description] [component_subtext1] [component_subtext2]"},
|
||||||
{TOK_GETDLLVERSION,"GetDLLVersion",3,0,"filename $(user_var: high output) $(user_var: low output)"},
|
{TOK_GETDLLVERSION,"GetDLLVersion",3,0,"filename $(user_var: high output) $(user_var: low output)"},
|
||||||
{TOK_GETDLLVERSIONLOCAL,"GetDLLVersionLocal",3,0,"localfilename $(user_var: high output) $(user_var: low output)"},
|
{TOK_GETDLLVERSIONLOCAL,"GetDLLVersionLocal",3,0,"localfilename $(user_var: high output) $(user_var: low output)"},
|
||||||
{TOK_GETFILETIME,"GetFileTime",3,0,"file $(user_var: high output) $(user_var: low output)"},
|
{TOK_GETFILETIME,"GetFileTime",3,0,"file $(user_var: high output) $(user_var: low output)"},
|
||||||
|
@ -46,8 +46,9 @@ static tokenType tokenlist[TOK__LAST] =
|
||||||
{TOK_DELETEREGVALUE,"DeleteRegValue",3,0,"root_key subkey entry_name\n root_key=(HKCR|HKLM|HKCU|HKU|HKCC|HKDD|HKPD)"},
|
{TOK_DELETEREGVALUE,"DeleteRegValue",3,0,"root_key subkey entry_name\n root_key=(HKCR|HKLM|HKCU|HKU|HKCC|HKDD|HKPD)"},
|
||||||
{TOK_DELETE,"Delete",1,1,"[/REBOOTOK] filespec"},
|
{TOK_DELETE,"Delete",1,1,"[/REBOOTOK] filespec"},
|
||||||
{TOK_DETAILPRINT,"DetailPrint",1,0,"message"},
|
{TOK_DETAILPRINT,"DetailPrint",1,0,"message"},
|
||||||
{TOK_DIRTEXT,"DirText",0,4,"[/LANG=lang_id] [directory_page_description] [directory_page_subtext] [browse button text]"},
|
{TOK_DIRTEXT,"DirText",0,3,"[directory_page_description] [directory_page_subtext] [browse_button_text] [browse_dlg_text]"},
|
||||||
{TOK_DIRSHOW,"DirShow",1,0,"(show|hide)"},
|
{TOK_DIRSHOW,"DirShow",1,0,"(show|hide)"},
|
||||||
|
{TOK_DIRVAR,"DirVar",1,0,"$(user_var: dir in/out))"},
|
||||||
{TOK_ROOTDIRINST,"AllowRootDirInstall",1,0,"(true|false)"},
|
{TOK_ROOTDIRINST,"AllowRootDirInstall",1,0,"(true|false)"},
|
||||||
{TOK_CHECKBITMAP,"CheckBitmap",1,0,"local_bitmap.bmp"},
|
{TOK_CHECKBITMAP,"CheckBitmap",1,0,"local_bitmap.bmp"},
|
||||||
{TOK_ENABLEWINDOW,"EnableWindow",2,0,"hwnd (1|0)"},
|
{TOK_ENABLEWINDOW,"EnableWindow",2,0,"hwnd (1|0)"},
|
||||||
|
@ -66,7 +67,7 @@ static tokenType tokenlist[TOK__LAST] =
|
||||||
{TOK_FLUSHINI,"FlushINI",1,0,"ini_file"},
|
{TOK_FLUSHINI,"FlushINI",1,0,"ini_file"},
|
||||||
{TOK_RESERVEFILE,"ReserveFile",1,-1,"[/nonfatal] [/r] file [file...]"},
|
{TOK_RESERVEFILE,"ReserveFile",1,-1,"[/nonfatal] [/r] file [file...]"},
|
||||||
{TOK_FILECLOSE,"FileClose",1,0,"$(user_var: handle input)"},
|
{TOK_FILECLOSE,"FileClose",1,0,"$(user_var: handle input)"},
|
||||||
{TOK_FILEERRORTEXT,"FileErrorText",0,3,"[/LANG=lang_id] [text (can contain $0)] [text without ignore (can contain $0)]"},
|
{TOK_FILEERRORTEXT,"FileErrorText",0,2,"[text (can contain $0)] [text without ignore (can contain $0)]"},
|
||||||
{TOK_FILEOPEN,"FileOpen",3,0,"$(user_var: handle output) filename openmode\n openmode=r|w|a"},
|
{TOK_FILEOPEN,"FileOpen",3,0,"$(user_var: handle output) filename openmode\n openmode=r|w|a"},
|
||||||
{TOK_FILEREAD,"FileRead",2,1,"$(user_var: handle input) $(user_var: text output) [maxlen]"},
|
{TOK_FILEREAD,"FileRead",2,1,"$(user_var: handle input) $(user_var: text output) [maxlen]"},
|
||||||
{TOK_FILEWRITE,"FileWrite",2,0,"$(user_var: handle input) text"},
|
{TOK_FILEWRITE,"FileWrite",2,0,"$(user_var: handle input) text"},
|
||||||
|
@ -78,18 +79,18 @@ static tokenType tokenlist[TOK__LAST] =
|
||||||
{TOK_GETDLGITEM,"GetDlgItem",3,0,"$(user_var: handle output) dialog item_id"},
|
{TOK_GETDLGITEM,"GetDlgItem",3,0,"$(user_var: handle output) dialog item_id"},
|
||||||
{TOK_GETFULLPATHNAME,"GetFullPathName",2,1,"[/SHORT] $(user_var: result) path_or_file"},
|
{TOK_GETFULLPATHNAME,"GetFullPathName",2,1,"[/SHORT] $(user_var: result) path_or_file"},
|
||||||
{TOK_GETTEMPFILENAME,"GetTempFileName",1,1,"$(user_var: name output) [base_dir]"},
|
{TOK_GETTEMPFILENAME,"GetTempFileName",1,1,"$(user_var: name output) [base_dir]"},
|
||||||
{TOK_GETWINTEXT,"GetWindowText",2,0,"$(user_var: handle output) hwnd"},
|
|
||||||
{TOK_HIDEWINDOW,"HideWindow",0,0,""},
|
{TOK_HIDEWINDOW,"HideWindow",0,0,""},
|
||||||
{TOK_ICON,"Icon",1,0,"local_icon.ico"},
|
{TOK_ICON,"Icon",1,0,"local_icon.ico"},
|
||||||
{TOK_IFABORT,"IfAbort",1,1,"label_to_goto_if_abort [label_to_goto_if_no_abort]"},
|
{TOK_IFABORT,"IfAbort",1,1,"label_to_goto_if_abort [label_to_goto_if_no_abort]"},
|
||||||
{TOK_IFERRORS,"IfErrors",1,1,"label_to_goto_if_errors [label_to_goto_if_no_errors]"},
|
{TOK_IFERRORS,"IfErrors",1,1,"label_to_goto_if_errors [label_to_goto_if_no_errors]"},
|
||||||
{TOK_IFFILEEXISTS,"IfFileExists",2,1,"filename label_to_goto_if_file_exists [label_to_goto_otherwise]"},
|
{TOK_IFFILEEXISTS,"IfFileExists",2,1,"filename label_to_goto_if_file_exists [label_to_goto_otherwise]"},
|
||||||
{TOK_IFREBOOTFLAG,"IfRebootFlag",1,1,"jump_if_set [jump_if_not_set]"},
|
{TOK_IFREBOOTFLAG,"IfRebootFlag",1,1,"jump_if_set [jump_if_not_set]"},
|
||||||
|
{TOK_IFSILENT,"IfSilent",1,1,"jump_if_silent [jump_if_not_silent]"},
|
||||||
{TOK_INSTALLDIRREGKEY,"InstallDirRegKey",3,0,"root_key subkey entry_name\n root_key=(HKCR|HKLM|HKCU|HKU|HKCC|HKDD|HKPD)"},
|
{TOK_INSTALLDIRREGKEY,"InstallDirRegKey",3,0,"root_key subkey entry_name\n root_key=(HKCR|HKLM|HKCU|HKU|HKCC|HKDD|HKPD)"},
|
||||||
{TOK_INSTCOLORS,"InstallColors",1,1,"(/windows | (foreground_color background_color))"},
|
{TOK_INSTCOLORS,"InstallColors",1,1,"(/windows | (foreground_color background_color))"},
|
||||||
{TOK_INSTDIR,"InstallDir",1,0,"default_install_directory"},
|
{TOK_INSTDIR,"InstallDir",1,0,"default_install_directory"},
|
||||||
{TOK_INSTPROGRESSFLAGS,"InstProgressFlags",0,-1,"[flag [...]]\n flag={smooth|colored}"},
|
{TOK_INSTPROGRESSFLAGS,"InstProgressFlags",0,-1,"[flag [...]]\n flag={smooth|colored}"},
|
||||||
{TOK_INSTTYPE,"InstType",1,1,"install_type_name | /NOCUSTOM | ([/LANG=lang_id] /CUSTOMSTRING=str) | /COMPONENTSONLYONCUSTOM"},
|
{TOK_INSTTYPE,"InstType",1,0,"install_type_name | /NOCUSTOM | /CUSTOMSTRING=str | /COMPONENTSONLYONCUSTOM"},
|
||||||
{TOK_INTOP,"IntOp",3,1,"$(user_var: result) val1 OP [val2]\n OP=(+ - * / % | & ^ ~ ! || &&)"},
|
{TOK_INTOP,"IntOp",3,1,"$(user_var: result) val1 OP [val2]\n OP=(+ - * / % | & ^ ~ ! || &&)"},
|
||||||
{TOK_INTCMP,"IntCmp",3,2,"val1 val2 jump_if_equal [jump_if_val1_less] [jump_if_val1_more]"},
|
{TOK_INTCMP,"IntCmp",3,2,"val1 val2 jump_if_equal [jump_if_val1_less] [jump_if_val1_more]"},
|
||||||
{TOK_INTCMPU,"IntCmpU",3,2,"val1 val2 jump_if_equal [jump_if_val1_less] [jump_if_val1_more]"},
|
{TOK_INTCMPU,"IntCmpU",3,2,"val1 val2 jump_if_equal [jump_if_val1_less] [jump_if_val1_more]"},
|
||||||
|
@ -97,10 +98,11 @@ static tokenType tokenlist[TOK__LAST] =
|
||||||
{TOK_ISWINDOW,"IsWindow",2,1,"hwnd jump_if_window [jump_if_not_window]"},
|
{TOK_ISWINDOW,"IsWindow",2,1,"hwnd jump_if_window [jump_if_not_window]"},
|
||||||
{TOK_GOTO,"Goto",1,0,"label"},
|
{TOK_GOTO,"Goto",1,0,"label"},
|
||||||
{TOK_LANGSTRING,"LangString",3,0,"[un.]name lang_id string"},
|
{TOK_LANGSTRING,"LangString",3,0,"[un.]name lang_id string"},
|
||||||
{TOK_LANGSTRINGUP,"LangStringUP",3,0,"[un.]name lang_id string"},
|
{TOK_LANGSTRINGUP,"LangStringUP",0,0,"obsolete, use LangString."},
|
||||||
{TOK_LICENSEDATA,"LicenseData",1,1,"[/LANG=lang_id] local_file_that_has_license_text.txt"},
|
{TOK_LICENSEDATA,"LicenseData",1,0,"local_file_that_has_license_text | license_lang_string"},
|
||||||
{TOK_LICENSEFORCESELECTION,"LicenseForceSelection",1,3,"[/LANG=lang_id] (checkbox [accept_text] | radiobuttons [accept_text] [decline_text] | off)"},
|
{TOK_LICENSEFORCESELECTION,"LicenseForceSelection",1,2,"(checkbox [accept_text] | radiobuttons [accept_text] [decline_text] | off)"},
|
||||||
{TOK_LICENSETEXT,"LicenseText",1,2,"[/LANG=lang_id] license_page_description [license_button_text]"},
|
{TOK_LICENSELANGSTRING,"LicenseLangString",3,0,"name lang_id license_path"},
|
||||||
|
{TOK_LICENSETEXT,"LicenseText",1,1,"license_page_description [license_button_text]"},
|
||||||
{TOK_LICENSEBKCOLOR,"LicenseBkColor",1,0,"background_color"},
|
{TOK_LICENSEBKCOLOR,"LicenseBkColor",1,0,"background_color"},
|
||||||
{TOK_LOADNLF,"LoadLanguageFile",1,0,"language.nlf"},
|
{TOK_LOADNLF,"LoadLanguageFile",1,0,"language.nlf"},
|
||||||
{TOK_LOGSET,"LogSet",1,0,"on|off"},
|
{TOK_LOGSET,"LogSet",1,0,"on|off"},
|
||||||
|
@ -108,13 +110,16 @@ static tokenType tokenlist[TOK__LAST] =
|
||||||
{TOK_MESSAGEBOX,"MessageBox",2,4,"mode messagebox_text [return_check label_to_goto_if_equal [return_check2 label2]]\n mode=modeflag[|modeflag[|modeflag[...]]]\n "
|
{TOK_MESSAGEBOX,"MessageBox",2,4,"mode messagebox_text [return_check label_to_goto_if_equal [return_check2 label2]]\n mode=modeflag[|modeflag[|modeflag[...]]]\n "
|
||||||
"modeflag=(MB_ABORTRETRYIGNORE|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_YESNO|MB_YESNOCANCEL|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND|MB_RIGHT"},
|
"modeflag=(MB_ABORTRETRYIGNORE|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_YESNO|MB_YESNOCANCEL|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND|MB_RIGHT"},
|
||||||
{TOK_NOP,"Nop",0,0,""},
|
{TOK_NOP,"Nop",0,0,""},
|
||||||
{TOK_NAME,"Name",1,1,"[/LANG=lang_id] installer_name"},
|
{TOK_NAME,"Name",1,0,"installer_name"},
|
||||||
{TOK_OUTFILE,"OutFile",1,0,"install_output.exe"},
|
{TOK_OUTFILE,"OutFile",1,0,"install_output.exe"},
|
||||||
#ifdef NSIS_SUPPORT_CODECALLBACKS
|
#ifdef NSIS_SUPPORT_CODECALLBACKS
|
||||||
{TOK_PAGE,"Page",1,5,"((custom [creator_function] [leave_function] [caption]) | ((license|components|directory|instfiles) [pre_function] [show_function] [leave_function])) [define_if_last]"},
|
{TOK_PAGE,"Page",1,4,"((custom [creator_function] [leave_function] [caption]) | ((license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function]))"},
|
||||||
#else
|
#else
|
||||||
{TOK_PAGE,"Page",1,1,"license|components|directory|instfiles"},
|
{TOK_PAGE,"Page",1,1,"license|components|directory|instfiles|uninstConfirm"},
|
||||||
#endif
|
#endif
|
||||||
|
{TOK_PAGECALLBACKS,"PageCallbacks",0,3,"([creator_function] [leave_function]) | ([pre_function] [show_function] [leave_function])"},
|
||||||
|
{TOK_PAGEEX,"PageEx",1,0,"[un.](custom|uninstConfirm|license|components|directory|instfiles)"},
|
||||||
|
{TOK_PAGEEXEND,"PageExEnd",0,0,""},
|
||||||
{TOK_POP,"Pop",1,0,"$(user_var: output)"},
|
{TOK_POP,"Pop",1,0,"$(user_var: output)"},
|
||||||
{TOK_PUSH,"Push",1,0,"string"},
|
{TOK_PUSH,"Push",1,0,"string"},
|
||||||
{TOK_QUIT,"Quit",0,0,""},
|
{TOK_QUIT,"Quit",0,0,""},
|
||||||
|
@ -147,7 +152,7 @@ static tokenType tokenlist[TOK__LAST] =
|
||||||
{TOK_INSTTYPEGETTEXT,"InstTypeGetText",2,0,"insttype_index $(user_var: output flags)"},
|
{TOK_INSTTYPEGETTEXT,"InstTypeGetText",2,0,"insttype_index $(user_var: output flags)"},
|
||||||
{TOK_SENDMESSAGE,"SendMessage",4,2,"hwnd message [wparam|STR:wParam] [lparam|STR:lParam] [$(user_var: return value)] [/TIMEOUT=X]"},
|
{TOK_SENDMESSAGE,"SendMessage",4,2,"hwnd message [wparam|STR:wParam] [lparam|STR:lParam] [$(user_var: return value)] [/TIMEOUT=X]"},
|
||||||
{TOK_SETAUTOCLOSE,"SetAutoClose",1,0,"(false|true)"},
|
{TOK_SETAUTOCLOSE,"SetAutoClose",1,0,"(false|true)"},
|
||||||
{TOK_SETBKCOLOR,"SetBkColor",2,0,"hwnd color"},
|
{TOK_SETCTLCOLORS,"SetCtlColors",2,1,"hwnd (branding | (text_color (transparent|bg_color)))"},
|
||||||
{TOK_SETBRANDINGIMAGE,"SetBrandingImage",1,2,"[/IMGID=image_item_id_in_dialog] [/RESIZETOFIT] bitmap.bmp"},
|
{TOK_SETBRANDINGIMAGE,"SetBrandingImage",1,2,"[/IMGID=image_item_id_in_dialog] [/RESIZETOFIT] bitmap.bmp"},
|
||||||
{TOK_SETCOMPRESS,"SetCompress",1,0,"(off|auto|force)"},
|
{TOK_SETCOMPRESS,"SetCompress",1,0,"(off|auto|force)"},
|
||||||
{TOK_SETCOMPRESSOR,"SetCompressor",1,0,"(zlib|bzip2)"},
|
{TOK_SETCOMPRESSOR,"SetCompressor",1,0,"(zlib|bzip2)"},
|
||||||
|
@ -162,6 +167,7 @@ static tokenType tokenlist[TOK__LAST] =
|
||||||
{TOK_SETPLUGINUNLOAD,"SetPluginUnload",1,0,"(manual|alwaysoff)"},
|
{TOK_SETPLUGINUNLOAD,"SetPluginUnload",1,0,"(manual|alwaysoff)"},
|
||||||
{TOK_SETREBOOTFLAG,"SetRebootFlag",1,0,"true|false"},
|
{TOK_SETREBOOTFLAG,"SetRebootFlag",1,0,"true|false"},
|
||||||
{TOK_SETSHELLVARCONTEXT,"SetShellVarContext",1,0,"all|current"},
|
{TOK_SETSHELLVARCONTEXT,"SetShellVarContext",1,0,"all|current"},
|
||||||
|
{TOK_SETSILENT,"SetSilent",1,0,"silent|normal"},
|
||||||
{TOK_SHOWDETAILS,"ShowInstDetails",1,0,"(hide|show|nevershow)"},
|
{TOK_SHOWDETAILS,"ShowInstDetails",1,0,"(hide|show|nevershow)"},
|
||||||
{TOK_SHOWDETAILSUNINST,"ShowUninstDetails",1,0,"(hide|show|nevershow)"},
|
{TOK_SHOWDETAILSUNINST,"ShowUninstDetails",1,0,"(hide|show|nevershow)"},
|
||||||
{TOK_SHOWWINDOW,"ShowWindow",2,0,"hwnd show_state"},
|
{TOK_SHOWWINDOW,"ShowWindow",2,0,"hwnd show_state"},
|
||||||
|
@ -171,17 +177,17 @@ static tokenType tokenlist[TOK__LAST] =
|
||||||
{TOK_STRCMP,"StrCmp",3,1,"str1 str2 label_to_goto_if_equal [label_to_goto_if_not]"},
|
{TOK_STRCMP,"StrCmp",3,1,"str1 str2 label_to_goto_if_equal [label_to_goto_if_not]"},
|
||||||
{TOK_STRCPY,"StrCpy",2,2,"$(user_var: output) str [maxlen] [startoffset]"},
|
{TOK_STRCPY,"StrCpy",2,2,"$(user_var: output) str [maxlen] [startoffset]"},
|
||||||
{TOK_STRLEN,"StrLen",2,0,"$(user_var: length output) str"},
|
{TOK_STRLEN,"StrLen",2,0,"$(user_var: length output) str"},
|
||||||
{TOK_SUBCAPTION,"SubCaption",2,1,"[/LANG=lang_id] page_number(0-4) new_subcaption"},
|
{TOK_SUBCAPTION,"SubCaption",2,0,"page_number(0-4) new_subcaption"},
|
||||||
{TOK_UNINSTALLEXENAME,"UninstallExeName",0,0,"no longer supported, use WriteUninstaller from section."},
|
{TOK_UNINSTALLEXENAME,"UninstallExeName",0,0,"no longer supported, use WriteUninstaller from section."},
|
||||||
{TOK_UNINSTCAPTION,"UninstallCaption",1,1,"[/LANG=lang_id] uninstaller_caption"},
|
{TOK_UNINSTCAPTION,"UninstallCaption",1,0,"uninstaller_caption"},
|
||||||
{TOK_UNINSTICON,"UninstallIcon",1,0,"icon_on_local_system.ico"},
|
{TOK_UNINSTICON,"UninstallIcon",1,0,"icon_on_local_system.ico"},
|
||||||
#ifdef NSIS_SUPPORT_CODECALLBACKS
|
#ifdef NSIS_SUPPORT_CODECALLBACKS
|
||||||
{TOK_UNINSTPAGE,"UninstPage",1,5,"((custom [creator_function] [leave_function] [caption]) | ((uninstConfirm|instfiles) [pre_function] [show_function] [leave_function])) [define_if_last]"},
|
{TOK_UNINSTPAGE,"UninstPage",1,4,"((custom [creator_function] [leave_function] [caption]) | ((license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function]))"},
|
||||||
#else
|
#else
|
||||||
{TOK_UNINSTPAGE,"UninstPage",1,1,"uninstConfirm|instfiles"},
|
{TOK_UNINSTPAGE,"UninstPage",1,1,"license|components|directory|instfiles|uninstConfirm"},
|
||||||
#endif
|
#endif
|
||||||
{TOK_UNINSTTEXT,"UninstallText",1,2,"[/LANG=lang_id] Text_to_go_on_uninstall page [subtext]"},
|
{TOK_UNINSTTEXT,"UninstallText",1,1,"Text_to_go_on_uninstall_page [subtext]"},
|
||||||
{TOK_UNINSTSUBCAPTION,"UninstallSubCaption",2,1,"[/LANG=lang_id] page_number(0-2) new_subcaption"},
|
{TOK_UNINSTSUBCAPTION,"UninstallSubCaption",2,0,"page_number(0-2) new_subcaption"},
|
||||||
{TOK_UNREGDLL,"UnRegDLL",1,0,"dll_path_on_target.dll"},
|
{TOK_UNREGDLL,"UnRegDLL",1,0,"dll_path_on_target.dll"},
|
||||||
// useless - {TOK_USEOUTERUIITEM,"UseOuterUIItem",2,0,"item id"},
|
// useless - {TOK_USEOUTERUIITEM,"UseOuterUIItem",2,0,"item id"},
|
||||||
{TOK_WINDOWICON,"WindowIcon",1,0,"on|off"},
|
{TOK_WINDOWICON,"WindowIcon",1,0,"on|off"},
|
||||||
|
@ -207,18 +213,18 @@ static tokenType tokenlist[TOK__LAST] =
|
||||||
{TOK_P_WARNING,"!warning",0,1,"[warning_message]"},
|
{TOK_P_WARNING,"!warning",0,1,"[warning_message]"},
|
||||||
{TOK_P_ERROR,"!error",0,1,"[error_message]"},
|
{TOK_P_ERROR,"!error",0,1,"[error_message]"},
|
||||||
|
|
||||||
{TOK_P_VERBOSE,"!verbose",1,0,"verbose_level"},
|
{TOK_P_VERBOSE,"!verbose",1,0,"verbose_level | push | pop"},
|
||||||
|
|
||||||
{TOK_P_MACRO,"!macro",1,-1,"macroname [parms ...]"},
|
{TOK_P_MACRO,"!macro",1,-1,"macroname [parms ...]"},
|
||||||
{TOK_P_MACROEND,"!macroend",0,0,""},
|
{TOK_P_MACROEND,"!macroend",0,0,""},
|
||||||
{TOK_P_INSERTMACRO,"!insertmacro",1,-1,"macroname [parms ...]"},
|
{TOK_P_INSERTMACRO,"!insertmacro",1,-1,"macroname [parms ...]"},
|
||||||
|
|
||||||
{TOK_MISCBUTTONTEXT,"MiscButtonText",0,5,"[/LANG=lang_id] [back button text] [next button text] [cancel button text] [close button text]"},
|
{TOK_MISCBUTTONTEXT,"MiscButtonText",0,4,"[back button text] [next button text] [cancel button text] [close button text]"},
|
||||||
{TOK_DETAILSBUTTONTEXT,"DetailsButtonText",0,2,"[/LANG=lang_id] [details button text]"},
|
{TOK_DETAILSBUTTONTEXT,"DetailsButtonText",0,1,"[details button text]"},
|
||||||
{TOK_UNINSTBUTTONTEXT,"UninstallButtonText",0,2,"[/LANG=lang_id] [uninstall button text]"},
|
{TOK_UNINSTBUTTONTEXT,"UninstallButtonText",0,1,"[uninstall button text]"},
|
||||||
{TOK_INSTBUTTONTEXT,"InstallButtonText",0,2,"[/LANG=lang_id] [install button text]"},
|
{TOK_INSTBUTTONTEXT,"InstallButtonText",0,1,"[install button text]"},
|
||||||
{TOK_SPACETEXTS,"SpaceTexts",0,3,"[/LANG=lang_id] [space required text] [space available text]"},
|
{TOK_SPACETEXTS,"SpaceTexts",0,2,"none | ([space required text] [space available text])"},
|
||||||
{TOK_COMPLETEDTEXT,"CompletedText",0,2,"[/LANG=lang_id] [completed text]"},
|
{TOK_COMPLETEDTEXT,"CompletedText",0,2,"[completed text]"},
|
||||||
|
|
||||||
{TOK_GETFUNCTIONADDR,"GetFunctionAddress",2,0,"output function"},
|
{TOK_GETFUNCTIONADDR,"GetFunctionAddress",2,0,"output function"},
|
||||||
{TOK_GETLABELADDR,"GetLabelAddress",2,0,"output label"},
|
{TOK_GETLABELADDR,"GetLabelAddress",2,0,"output label"},
|
||||||
|
@ -231,8 +237,8 @@ static tokenType tokenlist[TOK__LAST] =
|
||||||
// Added by ramon 3 jun 2003
|
// Added by ramon 3 jun 2003
|
||||||
{TOK_DEFVAR,"Var",1,0,"VarName"},
|
{TOK_DEFVAR,"Var",1,0,"VarName"},
|
||||||
// Added by ramon 6 jun 2003
|
// Added by ramon 6 jun 2003
|
||||||
{TOK_VI_ADDKEY,"VIAddVersionKey", 2, 1, "[/LANG=lang_id] keyname value"},
|
{TOK_VI_ADDKEY,"VIAddVersionKey",2,1,"/LANG=lang_id keyname value"},
|
||||||
{TOK_VI_SETPRODUCTVERSION,"VIProductVersion", 1, 0, "[version_string_X.X.X.X]"},
|
{TOK_VI_SETPRODUCTVERSION,"VIProductVersion",1,0,"[version_string_X.X.X.X]"},
|
||||||
};
|
};
|
||||||
|
|
||||||
void CEXEBuild::print_help(char *commandname)
|
void CEXEBuild::print_help(char *commandname)
|
||||||
|
|
|
@ -14,10 +14,11 @@ enum
|
||||||
TOK_WINDOWICON,
|
TOK_WINDOWICON,
|
||||||
TOK_DIRTEXT,
|
TOK_DIRTEXT,
|
||||||
TOK_COMPTEXT,
|
TOK_COMPTEXT,
|
||||||
TOK_LICENSETEXT,
|
TOK_LICENSEBKCOLOR,
|
||||||
TOK_LICENSEDATA,
|
TOK_LICENSEDATA,
|
||||||
TOK_LICENSEFORCESELECTION,
|
TOK_LICENSEFORCESELECTION,
|
||||||
TOK_LICENSEBKCOLOR,
|
TOK_LICENSELANGSTRING,
|
||||||
|
TOK_LICENSETEXT,
|
||||||
TOK_UNINSTTEXT,
|
TOK_UNINSTTEXT,
|
||||||
TOK_SILENTINST,
|
TOK_SILENTINST,
|
||||||
TOK_SILENTUNINST,
|
TOK_SILENTUNINST,
|
||||||
|
@ -46,6 +47,10 @@ enum
|
||||||
TOK_SETCOMPRESSOR,
|
TOK_SETCOMPRESSOR,
|
||||||
TOK_LOADNLF,
|
TOK_LOADNLF,
|
||||||
TOK_RESERVEFILE,
|
TOK_RESERVEFILE,
|
||||||
|
TOK_ALLOWSKIPFILES,
|
||||||
|
TOK_DEFVAR,
|
||||||
|
TOK_VI_ADDKEY,
|
||||||
|
TOK_VI_SETPRODUCTVERSION,
|
||||||
|
|
||||||
TOK_MISCBUTTONTEXT,
|
TOK_MISCBUTTONTEXT,
|
||||||
TOK_DETAILSBUTTONTEXT,
|
TOK_DETAILSBUTTONTEXT,
|
||||||
|
@ -89,9 +94,15 @@ enum
|
||||||
TOK_FUNCTIONEND,
|
TOK_FUNCTIONEND,
|
||||||
TOK_ADDSIZE,
|
TOK_ADDSIZE,
|
||||||
|
|
||||||
// Page oredering shit
|
// page oredering shit
|
||||||
TOK_PAGE,
|
TOK_PAGE,
|
||||||
TOK_UNINSTPAGE,
|
TOK_UNINSTPAGE,
|
||||||
|
TOK_PAGEEX,
|
||||||
|
TOK_PAGECALLBACKS,
|
||||||
|
TOK_PAGEEXEND,
|
||||||
|
|
||||||
|
// PageEx stuff
|
||||||
|
TOK_DIRVAR,
|
||||||
|
|
||||||
// flag setters
|
// flag setters
|
||||||
TOK_SETDATESAVE,
|
TOK_SETDATESAVE,
|
||||||
|
@ -175,8 +186,7 @@ enum
|
||||||
TOK_SENDMESSAGE,
|
TOK_SENDMESSAGE,
|
||||||
TOK_ISWINDOW,
|
TOK_ISWINDOW,
|
||||||
TOK_GETDLGITEM,
|
TOK_GETDLGITEM,
|
||||||
TOK_GETWINTEXT,
|
TOK_SETCTLCOLORS,
|
||||||
TOK_SETBKCOLOR,
|
|
||||||
TOK_FINDFIRST,
|
TOK_FINDFIRST,
|
||||||
TOK_FINDNEXT,
|
TOK_FINDNEXT,
|
||||||
TOK_FINDCLOSE,
|
TOK_FINDCLOSE,
|
||||||
|
@ -213,12 +223,8 @@ enum
|
||||||
TOK_CREATEFONT,
|
TOK_CREATEFONT,
|
||||||
TOK_SHOWWINDOW,
|
TOK_SHOWWINDOW,
|
||||||
TOK_ENABLEWINDOW,
|
TOK_ENABLEWINDOW,
|
||||||
// Added by ramon 23 May 2003
|
TOK_SETSILENT,
|
||||||
TOK_ALLOWSKIPFILES,
|
TOK_IFSILENT,
|
||||||
// Added by ramon 3 jun 2003
|
|
||||||
TOK_DEFVAR,
|
|
||||||
TOK_VI_ADDKEY,
|
|
||||||
TOK_VI_SETPRODUCTVERSION,
|
|
||||||
|
|
||||||
TOK__LAST,
|
TOK__LAST,
|
||||||
TOK__PLUGINCOMMAND
|
TOK__PLUGINCOMMAND
|
||||||
|
|
38
TODO.txt
38
TODO.txt
|
@ -1,42 +1,30 @@
|
||||||
TODO
|
TODO
|
||||||
|
|
||||||
-- NSIS 2 Beta 4 --
|
|
||||||
|
|
||||||
NSIS
|
NSIS
|
||||||
|
|
||||||
* SetCurInstType should work without the components page
|
* SetCurInstType should work without the components page
|
||||||
|
|
||||||
* component page for uninstaller, multiple sections
|
|
||||||
|
|
||||||
* more default texts in NLF language files
|
|
||||||
|
|
||||||
* all installer strings should be language strings
|
|
||||||
|
|
||||||
* move no custom to compiler (custom as just another inst type)
|
|
||||||
|
|
||||||
* empty subsections should not show
|
* empty subsections should not show
|
||||||
|
|
||||||
-- Before NSIS 2 Final --
|
* start optimizing datablock after file mapping was released
|
||||||
|
|
||||||
|
* map files part by part to save memory
|
||||||
|
|
||||||
|
* compressor from command line
|
||||||
|
|
||||||
|
* skip plugin calls, file instructions that add more than one file with +1 with goto
|
||||||
|
|
||||||
|
* more powerful plug-ins (access to ExecFunc and flags and even more)
|
||||||
|
|
||||||
|
* LZMA compression
|
||||||
|
|
||||||
|
* stop using static variables so CEXEBuild can be used as a real class
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
|
|
||||||
* write an advanced paging example showing multiple components page with multiple
|
* write an advanced paging example showing multiple components page with multiple
|
||||||
instfiles pages
|
instfiles pages
|
||||||
|
|
||||||
NSIS
|
|
||||||
|
|
||||||
* skip plugin calls, file instructions that add more than one file with +1 with goto
|
|
||||||
|
|
||||||
* different color for the drive space when there is not enough space
|
|
||||||
|
|
||||||
* more powerful plug-ins (access to ExecFunc and flags and even more)
|
|
||||||
|
|
||||||
* ChangeUI RTL full support
|
|
||||||
|
|
||||||
* LZMA compression
|
|
||||||
|
|
||||||
* stop using static variables so CEXEBuild can be used as a real class
|
|
||||||
|
|
||||||
PLUGINS
|
PLUGINS
|
||||||
|
|
||||||
* InstallOptions - custom class names so you can include whatever control you want
|
* InstallOptions - custom class names so you can include whatever control you want
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue