more clean-up:
* removed ResetInputScript() * don't edit g_sdata.script for CreateProcess * use SetScript in LoadMRUFile * proper and clear allocation of g_sdata.compile_command in CompileNSISScript() git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@5047 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
3a657559b0
commit
845566790d
3 changed files with 35 additions and 30 deletions
|
@ -76,7 +76,7 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmd
|
||||||
return msg.wParam;
|
return msg.wParam;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetScript(const char *script, bool clearArgs = true)
|
void SetScript(const char *script, bool clearArgs /*= true*/)
|
||||||
{
|
{
|
||||||
if (g_sdata.script)
|
if (g_sdata.script)
|
||||||
{
|
{
|
||||||
|
@ -85,12 +85,12 @@ void SetScript(const char *script, bool clearArgs = true)
|
||||||
|
|
||||||
if (clearArgs)
|
if (clearArgs)
|
||||||
{
|
{
|
||||||
if (g_sdata.script_cmd_args);
|
if (g_sdata.script_cmd_args)
|
||||||
{
|
{
|
||||||
GlobalFree(g_sdata.script_cmd_args);
|
GlobalFree(g_sdata.script_cmd_args);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_sdata.script_cmd_args = (char *) GlobalAlloc(GPTR, 1)
|
g_sdata.script_cmd_args = (char *) GlobalAlloc(GPTR, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_sdata.script = (char *) GlobalAlloc(GPTR, lstrlen(script) + 1);
|
g_sdata.script = (char *) GlobalAlloc(GPTR, lstrlen(script) + 1);
|
||||||
|
@ -108,13 +108,6 @@ void AddScriptCmdArgs(const char *arg)
|
||||||
lstrcat(g_sdata.script_cmd_args, "\"");
|
lstrcat(g_sdata.script_cmd_args, "\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResetInputScript()
|
|
||||||
{
|
|
||||||
if(g_sdata.input_script) {
|
|
||||||
SetScript(g_sdata.input_script);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProcessCommandLine()
|
void ProcessCommandLine()
|
||||||
{
|
{
|
||||||
int argc;
|
int argc;
|
||||||
|
@ -309,7 +302,6 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||||
g_sdata.best_compressor_name = g_sdata.compressor_name;
|
g_sdata.best_compressor_name = g_sdata.compressor_name;
|
||||||
g_sdata.compressor_name = compressor_names[(int)COMPRESSOR_SCRIPT+2];
|
g_sdata.compressor_name = compressor_names[(int)COMPRESSOR_SCRIPT+2];
|
||||||
ResetObjects();
|
ResetObjects();
|
||||||
ResetInputScript();
|
|
||||||
|
|
||||||
CompileNSISScript();
|
CompileNSISScript();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -360,8 +352,6 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
|
|
||||||
g_sdata.compressor_name = compressor_names[(int)COMPRESSOR_SCRIPT+1];
|
g_sdata.compressor_name = compressor_names[(int)COMPRESSOR_SCRIPT+1];
|
||||||
g_sdata.appended = false;
|
|
||||||
ResetInputScript();
|
|
||||||
|
|
||||||
if(!lstrcmpi(g_sdata.best_compressor_name,compressor_names[this_compressor])) {
|
if(!lstrcmpi(g_sdata.best_compressor_name,compressor_names[this_compressor])) {
|
||||||
wsprintf(buf,COMPRESSOR_MESSAGE,g_sdata.best_compressor_name,thisSize);
|
wsprintf(buf,COMPRESSOR_MESSAGE,g_sdata.best_compressor_name,thisSize);
|
||||||
|
@ -374,13 +364,11 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||||
LogMessage(g_sdata.hwnd, g_sdata.compressor_stats);
|
LogMessage(g_sdata.hwnd, g_sdata.compressor_stats);
|
||||||
}
|
}
|
||||||
DeleteFile(temp_file_name);
|
DeleteFile(temp_file_name);
|
||||||
ResetInputScript();
|
|
||||||
lstrcpy(g_sdata.compressor_stats,"");
|
lstrcpy(g_sdata.compressor_stats,"");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
g_sdata.compressor_name = compressor_names[this_compressor+1];
|
g_sdata.compressor_name = compressor_names[this_compressor+1];
|
||||||
ResetObjects();
|
ResetObjects();
|
||||||
ResetInputScript();
|
|
||||||
|
|
||||||
CompileNSISScript();
|
CompileNSISScript();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -738,9 +726,9 @@ DWORD WINAPI MakeNSISProc(LPVOID p) {
|
||||||
si.hStdOutput = newstdout;
|
si.hStdOutput = newstdout;
|
||||||
si.hStdError = newstdout;
|
si.hStdError = newstdout;
|
||||||
si.hStdInput = newstdin;
|
si.hStdInput = newstdin;
|
||||||
if (!CreateProcess(NULL,g_sdata.script,NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi)) {
|
if (!CreateProcess(NULL,g_sdata.compile_command,NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi)) {
|
||||||
char buf[MAX_STRING];
|
char buf[MAX_STRING];
|
||||||
wsprintf(buf,"Could not execute:\r\n %s.",g_sdata.script);
|
wsprintf(buf,"Could not execute:\r\n %s.",g_sdata.compile_command);
|
||||||
ErrorMessage(g_sdata.hwnd,buf);
|
ErrorMessage(g_sdata.hwnd,buf);
|
||||||
CloseHandle(newstdout);
|
CloseHandle(newstdout);
|
||||||
CloseHandle(read_stdout);
|
CloseHandle(read_stdout);
|
||||||
|
@ -967,7 +955,6 @@ BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
case IDOK:
|
case IDOK:
|
||||||
{
|
{
|
||||||
ResetObjects();
|
ResetObjects();
|
||||||
ResetInputScript();
|
|
||||||
ResetSymbols();
|
ResetSymbols();
|
||||||
g_sdata.symbols = GetSymbols(hwndDlg);
|
g_sdata.symbols = GetSymbols(hwndDlg);
|
||||||
|
|
||||||
|
@ -1300,7 +1287,6 @@ void SetCompressor(NCOMPRESSOR compressor)
|
||||||
}
|
}
|
||||||
CheckMenuItem(g_sdata.menu, command, MF_BYCOMMAND | MF_CHECKED);
|
CheckMenuItem(g_sdata.menu, command, MF_BYCOMMAND | MF_CHECKED);
|
||||||
ResetObjects();
|
ResetObjects();
|
||||||
ResetInputScript();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -151,6 +151,7 @@ BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
BOOL CALLBACK SymbolSetProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
BOOL CALLBACK SymbolSetProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
BOOL CALLBACK CompressorProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
BOOL CALLBACK CompressorProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
|
void SetScript(const char *script, bool clearArgs = true);
|
||||||
void CompileNSISScript();
|
void CompileNSISScript();
|
||||||
char* BuildSymbols();
|
char* BuildSymbols();
|
||||||
void SetCompressor(NCOMPRESSOR);
|
void SetCompressor(NCOMPRESSOR);
|
||||||
|
@ -165,6 +166,7 @@ void SaveMRUList();
|
||||||
typedef struct NSISScriptData {
|
typedef struct NSISScriptData {
|
||||||
char *script;
|
char *script;
|
||||||
char *script_cmd_args;
|
char *script_cmd_args;
|
||||||
|
char *compile_command;
|
||||||
char *output_exe;
|
char *output_exe;
|
||||||
char *input_script;
|
char *input_script;
|
||||||
char *branding;
|
char *branding;
|
||||||
|
@ -174,7 +176,6 @@ typedef struct NSISScriptData {
|
||||||
BOOL userSelectCompressor;
|
BOOL userSelectCompressor;
|
||||||
DWORD logLength;
|
DWORD logLength;
|
||||||
DWORD warnings;
|
DWORD warnings;
|
||||||
BOOL appended;
|
|
||||||
HINSTANCE hInstance;
|
HINSTANCE hInstance;
|
||||||
HWND hwnd;
|
HWND hwnd;
|
||||||
HMENU menu;
|
HMENU menu;
|
||||||
|
|
|
@ -268,24 +268,40 @@ void CompileNSISScript() {
|
||||||
DragAcceptFiles(g_sdata.hwnd,TRUE);
|
DragAcceptFiles(g_sdata.hwnd,TRUE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!g_sdata.appended) {
|
if (!g_sdata.compile_command) {
|
||||||
if (s) GlobalFree(s);
|
if (s) GlobalFree(s);
|
||||||
char *symbols = BuildSymbols();
|
char *symbols = BuildSymbols();
|
||||||
|
|
||||||
char compressor[40];
|
char compressor[40];
|
||||||
if(lstrlen(g_sdata.compressor_name)) {
|
if(lstrlen(g_sdata.compressor_name)) {
|
||||||
wsprintf(compressor,"/X\"SetCompressor /FINAL %s\" ",g_sdata.compressor_name);
|
wsprintf(compressor,"/X\"SetCompressor /FINAL %s\"",g_sdata.compressor_name);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lstrcpy(compressor,"");
|
lstrcpy(compressor,"");
|
||||||
}
|
}
|
||||||
|
|
||||||
s = (char *)GlobalAlloc(GPTR, lstrlen(g_sdata.script)+lstrlen(symbols)+lstrlen(compressor)+sizeof(EXENAME)+sizeof(" /NOTIFYHWND ")+23);
|
g_sdata.compile_command = (char *) GlobalAlloc(
|
||||||
wsprintf(s,"%s %s%s /NOTIFYHWND %d %s -- \"%s\"",EXENAME,compressor,symbols,g_sdata.hwnd,g_sdata.script_cmd_args,g_sdata.script);
|
GPTR,
|
||||||
|
/* makensis.exe */ sizeof(EXENAME) + /* space */ 1 +
|
||||||
|
/* script path */ lstrlen(g_sdata.script) + /* space */ 1 +
|
||||||
|
/* script cmd args */ lstrlen(g_sdata.script_cmd_args) + /* space */ 1 +
|
||||||
|
/* defines /Dblah=... */ lstrlen(symbols) + /* space */ 1 +
|
||||||
|
/* /XSetCompressor... */ lstrlen(compressor) + /* space */ 1 +
|
||||||
|
/* /NOTTIFYHWND + HWND */ sizeof("/NOTIFYHWND -4294967295") + /* space */ 1
|
||||||
|
);
|
||||||
|
|
||||||
|
wsprintf(
|
||||||
|
g_sdata.compile_command,
|
||||||
|
"%s %s %s /NOTIFYHWND %d %s -- \"%s\"",
|
||||||
|
EXENAME,
|
||||||
|
compressor,
|
||||||
|
symbols,
|
||||||
|
g_sdata.hwnd,
|
||||||
|
g_sdata.script_cmd_args,
|
||||||
|
g_sdata.script
|
||||||
|
);
|
||||||
|
|
||||||
GlobalFree(symbols);
|
GlobalFree(symbols);
|
||||||
if (g_sdata.script) GlobalFree(g_sdata.script);
|
|
||||||
g_sdata.script = s;
|
|
||||||
g_sdata.appended = TRUE;
|
|
||||||
}
|
}
|
||||||
GlobalFree(g_sdata.input_script);
|
GlobalFree(g_sdata.input_script);
|
||||||
GlobalFree(g_sdata.output_exe);
|
GlobalFree(g_sdata.output_exe);
|
||||||
|
@ -507,10 +523,13 @@ void SaveSymbolSet(char *name, char **symbols)
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResetObjects() {
|
void ResetObjects() {
|
||||||
g_sdata.appended = FALSE;
|
if (g_sdata.compile_command)
|
||||||
|
GlobalFree(g_sdata.compile_command);
|
||||||
|
|
||||||
g_sdata.warnings = FALSE;
|
g_sdata.warnings = FALSE;
|
||||||
g_sdata.retcode = -1;
|
g_sdata.retcode = -1;
|
||||||
g_sdata.thread = NULL;
|
g_sdata.thread = NULL;
|
||||||
|
g_sdata.compile_command = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResetSymbols() {
|
void ResetSymbols() {
|
||||||
|
@ -810,8 +829,7 @@ void BuildMRUMenus()
|
||||||
void LoadMRUFile(int position)
|
void LoadMRUFile(int position)
|
||||||
{
|
{
|
||||||
if (!g_sdata.thread && position >=0 && position < MRU_LIST_SIZE && g_mru_list[position][0]) {
|
if (!g_sdata.thread && position >=0 && position < MRU_LIST_SIZE && g_mru_list[position][0]) {
|
||||||
g_sdata.script = (char *)GlobalAlloc(GPTR,lstrlen(g_mru_list[position])+3);
|
SetScript(g_mru_list[position]);
|
||||||
wsprintf(g_sdata.script,"\"%s\"",g_mru_list[position]);
|
|
||||||
if(IsValidFile(g_mru_list[position])) {
|
if(IsValidFile(g_mru_list[position])) {
|
||||||
PushMRUFile(g_mru_list[position]);
|
PushMRUFile(g_mru_list[position]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue