Replaced NSIS-based installer wrapper by 7z-based one.
This commit is contained in:
parent
a31c9cc1bd
commit
fdae817963
48
etc/7zSD.cmd
Normal file
48
etc/7zSD.cmd
Normal file
@ -0,0 +1,48 @@
|
||||
@echo off
|
||||
setlocal ENABLEDELAYEDEXPANSION
|
||||
|
||||
REM Print help screen
|
||||
if "%~4"=="" (
|
||||
echo 7-Zip SFX Builder
|
||||
echo Usage: 7zSD.cmd ^<input^> ^<output^> ^<title^> ^<fname^>
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM Generate temp file names
|
||||
set "SEVENZIP_SFX_CFG=%TMP%\~7zSD%RANDOM%%RANDOM%.cf"
|
||||
set "SEVENZIP_SFX_ARC=%TMP%\~7zSD%RANDOM%%RANDOM%.7z"
|
||||
|
||||
REM Create the configuration file
|
||||
echo ;^^!@Install@^^!UTF-8^^!> "%SEVENZIP_SFX_CFG%"
|
||||
echo Title="%~3">> "%SEVENZIP_SFX_CFG%"
|
||||
echo ExecuteFile="%~n4.exe">> "%SEVENZIP_SFX_CFG%"
|
||||
echo ;^^!@InstallEnd@^^!>> "%SEVENZIP_SFX_CFG%"
|
||||
|
||||
REM Create the 7-Zip archive
|
||||
"%~dp0\7za.exe" a -t7z "%SEVENZIP_SFX_ARC%" "%~1"
|
||||
if %ERRORLEVEL% NEQ 0 (
|
||||
del "%SEVENZIP_SFX_CFG%"
|
||||
del "%SEVENZIP_SFX_ARC%"
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM Rename the embedded file
|
||||
"%~dp0\7za.exe" rn "%SEVENZIP_SFX_ARC%" "%~nx1" "%~n4.exe"
|
||||
if %ERRORLEVEL% NEQ 0 (
|
||||
del "%SEVENZIP_SFX_CFG%"
|
||||
del "%SEVENZIP_SFX_ARC%"
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM Actually build the SFX file
|
||||
copy /b "%~dp0\7zSD.sfx" + "%SEVENZIP_SFX_CFG%" + "%SEVENZIP_SFX_ARC%" "%~2"
|
||||
if %ERRORLEVEL% NEQ 0 (
|
||||
del "%SEVENZIP_SFX_CFG%"
|
||||
del "%SEVENZIP_SFX_ARC%"
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM Final clean-up
|
||||
del "%SEVENZIP_SFX_CFG%"
|
||||
del "%SEVENZIP_SFX_ARC%"
|
||||
exit /b 0
|
326
etc/7zSD.diff
Normal file
326
etc/7zSD.diff
Normal file
@ -0,0 +1,326 @@
|
||||
CPP/7zip/Bundles/SFXSetup/Compat.xml | 1 +
|
||||
CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp | 52 +++++++++++++++++++-----
|
||||
CPP/7zip/Bundles/SFXSetup/resource.rc | 4 +-
|
||||
CPP/7zip/UI/Explorer/MyMessages.cpp | 4 +-
|
||||
CPP/7zip/UI/Explorer/MyMessages.h | 2 +-
|
||||
CPP/7zip/UI/FileManager/FormatUtils.cpp | 2 +-
|
||||
CPP/7zip/UI/FileManager/ProgressDialog.cpp | 4 +-
|
||||
CPP/Common/MyWindows.h | 1 +
|
||||
CPP/Windows/FileDir.cpp | 63 ++++++++++++++++++++++++++----
|
||||
CPP/Windows/FileDir.h | 1 +
|
||||
10 files changed, 110 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/CPP/7zip/Bundles/SFXSetup/Compat.xml b/CPP/7zip/Bundles/SFXSetup/Compat.xml
|
||||
new file mode 100644
|
||||
index 0000000..76fecef
|
||||
--- /dev/null
|
||||
+++ b/CPP/7zip/Bundles/SFXSetup/Compat.xml
|
||||
@@ -0,0 +1 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"><application><supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/><supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/><supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/><supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/><supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/></application></compatibility></assembly>
|
||||
\ No newline at end of file
|
||||
diff --git a/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp b/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp
|
||||
index aef2e19..7f856f1 100644
|
||||
--- a/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp
|
||||
+++ b/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp
|
||||
@@ -37,6 +37,27 @@ static CFSTR kTempDirPrefix = FTEXT("7zS");
|
||||
|
||||
#define _SHELL_EXECUTE
|
||||
|
||||
+static HWND GetCurrentHwnd(void)
|
||||
+{
|
||||
+ HWND result = ::GetActiveWindow();
|
||||
+ if(!result)
|
||||
+ {
|
||||
+ for (int i = 0; i < 256; ++i)
|
||||
+ {
|
||||
+ if(i > 0)
|
||||
+ {
|
||||
+ ::Sleep(1); /*some delay*/
|
||||
+ }
|
||||
+ result = ::GetForegroundWindow();
|
||||
+ if(result)
|
||||
+ {
|
||||
+ break; /*done*/
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
static bool ReadDataString(CFSTR fileName, LPCSTR startID,
|
||||
LPCSTR endID, AString &stringResult)
|
||||
{
|
||||
@@ -145,7 +166,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /* hPrevInstance */,
|
||||
|
||||
UString archiveName, switches;
|
||||
#ifdef _SHELL_EXECUTE
|
||||
- UString executeFile, executeParameters;
|
||||
+ UString executeFile, executeParameters, executeErrorMsg;
|
||||
#endif
|
||||
NCommandLineParser::SplitCommandLine(GetCommandLineW(), archiveName, switches);
|
||||
|
||||
@@ -191,7 +212,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /* hPrevInstance */,
|
||||
dirPrefix = pairs[index].String;
|
||||
if (!installPrompt.IsEmpty() && !assumeYes)
|
||||
{
|
||||
- if (MessageBoxW(0, installPrompt, friendlyName, MB_YESNO |
|
||||
+ if (MessageBoxW(NULL, installPrompt, friendlyName, MB_YESNO | MB_SYSTEMMODAL |
|
||||
MB_ICONQUESTION) != IDYES)
|
||||
return 0;
|
||||
}
|
||||
@@ -200,6 +221,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /* hPrevInstance */,
|
||||
#ifdef _SHELL_EXECUTE
|
||||
executeFile = GetTextConfigValue(pairs, L"ExecuteFile");
|
||||
executeParameters = GetTextConfigValue(pairs, L"ExecuteParameters");
|
||||
+ executeErrorMsg = GetTextConfigValue(pairs, L"ExecuteErrorMsg");
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -243,7 +265,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /* hPrevInstance */,
|
||||
{
|
||||
if (errorMessage.IsEmpty())
|
||||
errorMessage = NError::MyFormatMessage(result);
|
||||
- ::MessageBoxW(0, errorMessage, NWindows::MyLoadString(IDS_EXTRACTION_ERROR_TITLE), MB_ICONERROR);
|
||||
+ ::MessageBoxW(NULL, errorMessage, NWindows::MyLoadString(IDS_EXTRACTION_ERROR_TITLE), MB_ICONERROR | MB_SYSTEMMODAL);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
@@ -287,13 +309,25 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /* hPrevInstance */,
|
||||
execInfo.lpDirectory = NULL;
|
||||
execInfo.nShow = SW_SHOWNORMAL;
|
||||
execInfo.hProcess = 0;
|
||||
- /* BOOL success = */ ::ShellExecuteEx(&execInfo);
|
||||
- UINT32 result = (UINT32)(UINT_PTR)execInfo.hInstApp;
|
||||
- if (result <= 32)
|
||||
+
|
||||
+ for (;;)
|
||||
{
|
||||
- if (!assumeYes)
|
||||
- ShowErrorMessage(L"Can not open file");
|
||||
- return 1;
|
||||
+ execInfo.hwnd = GetCurrentHwnd(); /*prevent UAC dialog from appearing in the background!*/
|
||||
+ /* BOOL success = */ ::ShellExecuteEx(&execInfo);
|
||||
+ UINT32 result = (UINT32)(UINT_PTR)execInfo.hInstApp;
|
||||
+ if (result <= 32)
|
||||
+ {
|
||||
+ if (!assumeYes)
|
||||
+ {
|
||||
+ const wchar_t *const lpErrorMessage = executeErrorMsg.IsEmpty() ? L"Failed to launch installer. Please try again!" : executeErrorMsg;
|
||||
+ if (MessageBoxW(NULL, lpErrorMessage, L"Setup", MB_SYSTEMMODAL | MB_ICONEXCLAMATION | MB_RETRYCANCEL) == IDRETRY)
|
||||
+ {
|
||||
+ continue; /*retry*/
|
||||
+ }
|
||||
+ }
|
||||
+ return 1;
|
||||
+ }
|
||||
+ break; /*success*/
|
||||
}
|
||||
hProcess = execInfo.hProcess;
|
||||
}
|
||||
diff --git a/CPP/7zip/Bundles/SFXSetup/resource.rc b/CPP/7zip/Bundles/SFXSetup/resource.rc
|
||||
index 47e1b76..c796e65 100644
|
||||
--- a/CPP/7zip/Bundles/SFXSetup/resource.rc
|
||||
+++ b/CPP/7zip/Bundles/SFXSetup/resource.rc
|
||||
@@ -1,14 +1,14 @@
|
||||
#include "../../MyVersionInfo.rc"
|
||||
#include "resource.h"
|
||||
|
||||
-MY_VERSION_INFO_APP("7z Setup SFX", "7zS.sfx")
|
||||
+MY_VERSION_INFO_APP("Setup SFX", "7zS.sfx")
|
||||
|
||||
IDI_ICON ICON "setup.ico"
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_EXTRACTION_ERROR_TITLE "Extraction Failed"
|
||||
- IDS_EXTRACTION_ERROR_MESSAGE "File is corrupt"
|
||||
+ IDS_EXTRACTION_ERROR_MESSAGE "File is corrupt. Please download again!"
|
||||
IDS_CANNOT_CREATE_FOLDER "Cannot create folder '{0}'"
|
||||
IDS_PROGRESS_EXTRACTING "Extracting"
|
||||
END
|
||||
diff --git a/CPP/7zip/UI/Explorer/MyMessages.cpp b/CPP/7zip/UI/Explorer/MyMessages.cpp
|
||||
index 70c2a46..84ac8f4 100644
|
||||
--- a/CPP/7zip/UI/Explorer/MyMessages.cpp
|
||||
+++ b/CPP/7zip/UI/Explorer/MyMessages.cpp
|
||||
@@ -1,6 +1,6 @@
|
||||
// MyMessages.cpp
|
||||
|
||||
-#include "StdAfx.h"
|
||||
+//#include "StdAfx.h"
|
||||
|
||||
#include "MyMessages.h"
|
||||
|
||||
@@ -13,7 +13,7 @@ using namespace NWindows;
|
||||
|
||||
void ShowErrorMessage(HWND window, LPCWSTR message)
|
||||
{
|
||||
- ::MessageBoxW(window, message, L"7-Zip", MB_OK | MB_ICONSTOP);
|
||||
+ ::MessageBoxW(window, message, L"Setup", MB_OK | MB_SYSTEMMODAL | MB_ICONSTOP);
|
||||
}
|
||||
|
||||
void ShowErrorMessageHwndRes(HWND window, UINT resID)
|
||||
diff --git a/CPP/7zip/UI/Explorer/MyMessages.h b/CPP/7zip/UI/Explorer/MyMessages.h
|
||||
index d5822f4..3bd6e2e 100644
|
||||
--- a/CPP/7zip/UI/Explorer/MyMessages.h
|
||||
+++ b/CPP/7zip/UI/Explorer/MyMessages.h
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "../../../Common/MyString.h"
|
||||
|
||||
void ShowErrorMessage(HWND window, LPCWSTR message);
|
||||
-inline void ShowErrorMessage(LPCWSTR message) { ShowErrorMessage(0, message); }
|
||||
+inline void ShowErrorMessage(LPCWSTR message) { ShowErrorMessage(NULL, message); }
|
||||
|
||||
void ShowErrorMessageHwndRes(HWND window, UInt32 langID);
|
||||
void ShowErrorMessageRes(UInt32 langID);
|
||||
diff --git a/CPP/7zip/UI/FileManager/FormatUtils.cpp b/CPP/7zip/UI/FileManager/FormatUtils.cpp
|
||||
index 2143c3f..3a18712 100644
|
||||
--- a/CPP/7zip/UI/FileManager/FormatUtils.cpp
|
||||
+++ b/CPP/7zip/UI/FileManager/FormatUtils.cpp
|
||||
@@ -1,6 +1,6 @@
|
||||
// FormatUtils.cpp
|
||||
|
||||
-#include "StdAfx.h"
|
||||
+//#include "StdAfx.h"
|
||||
|
||||
#include "../../../Common/IntToString.h"
|
||||
|
||||
diff --git a/CPP/7zip/UI/FileManager/ProgressDialog.cpp b/CPP/7zip/UI/FileManager/ProgressDialog.cpp
|
||||
index 65201a9..4d23499 100644
|
||||
--- a/CPP/7zip/UI/FileManager/ProgressDialog.cpp
|
||||
+++ b/CPP/7zip/UI/FileManager/ProgressDialog.cpp
|
||||
@@ -1,6 +1,6 @@
|
||||
// ProgressDialog.cpp
|
||||
|
||||
-#include "StdAfx.h"
|
||||
+//#include "StdAfx.h"
|
||||
|
||||
#include "../../../Common/IntToString.h"
|
||||
|
||||
@@ -165,7 +165,7 @@ bool CProgressDialog::OnButtonClicked(int buttonID, HWND buttonHWND)
|
||||
bool paused = Sync.GetPaused();
|
||||
Sync.SetPaused(true);
|
||||
_inCancelMessageBox = true;
|
||||
- int res = ::MessageBoxW(*this, L"Are you sure you want to cancel?", _title, MB_YESNOCANCEL);
|
||||
+ int res = ::MessageBoxW(*this, L"Are you sure you want to cancel?", _title, MB_YESNOCANCEL | MB_SYSTEMMODAL);
|
||||
_inCancelMessageBox = false;
|
||||
Sync.SetPaused(paused);
|
||||
if (res == IDCANCEL || res == IDNO)
|
||||
diff --git a/CPP/Common/MyWindows.h b/CPP/Common/MyWindows.h
|
||||
index 139a4e8..c40767f 100644
|
||||
--- a/CPP/Common/MyWindows.h
|
||||
+++ b/CPP/Common/MyWindows.h
|
||||
@@ -6,6 +6,7 @@
|
||||
#ifdef _WIN32
|
||||
|
||||
#include <windows.h>
|
||||
+#include <shlobj.h>
|
||||
|
||||
#ifdef UNDER_CE
|
||||
#undef VARIANT_TRUE
|
||||
diff --git a/CPP/Windows/FileDir.cpp b/CPP/Windows/FileDir.cpp
|
||||
index da71b71..f21400b 100644
|
||||
--- a/CPP/Windows/FileDir.cpp
|
||||
+++ b/CPP/Windows/FileDir.cpp
|
||||
@@ -14,6 +14,8 @@
|
||||
extern bool g_IsNT;
|
||||
#endif
|
||||
|
||||
+static CFSTR kTempDirName = FTEXT("TEMP");
|
||||
+
|
||||
using namespace NWindows;
|
||||
using namespace NFile;
|
||||
using namespace NName;
|
||||
@@ -67,6 +69,36 @@ bool GetSystemDir(FString &path)
|
||||
}
|
||||
return (needLength > 0 && needLength <= MAX_PATH);
|
||||
}
|
||||
+
|
||||
+bool GetAppDataDir(FString &path)
|
||||
+{
|
||||
+ HRESULT hResult;
|
||||
+ static const int FolderId[] = { CSIDL_LOCAL_APPDATA, CSIDL_APPDATA, CSIDL_PROFILE, NULL };
|
||||
+ for(size_t i = 0; i < 3; ++i)
|
||||
+ {
|
||||
+ #ifndef _UNICODE
|
||||
+ if (!g_IsNT)
|
||||
+ {
|
||||
+ TCHAR s[MAX_PATH + 2];
|
||||
+ s[0] = 0;
|
||||
+ hResult = ::SHGetFolderPath(NULL, FolderId[i] | CSIDL_FLAG_CREATE, NULL, 0, s);
|
||||
+ path = fas2fs(s);
|
||||
+ }
|
||||
+ else
|
||||
+ #endif
|
||||
+ {
|
||||
+ WCHAR s[MAX_PATH + 2];
|
||||
+ s[0] = 0;
|
||||
+ hResult = ::SHGetFolderPathW(NULL, FolderId[i] | CSIDL_FLAG_CREATE, NULL, 0, s);
|
||||
+ path = us2fs(s);
|
||||
+ }
|
||||
+ if(hResult == S_OK)
|
||||
+ {
|
||||
+ return true; /*success*/
|
||||
+ }
|
||||
+ }
|
||||
+ return false;
|
||||
+}
|
||||
#endif
|
||||
|
||||
bool SetDirTime(CFSTR path, const FILETIME *cTime, const FILETIME *aTime, const FILETIME *mTime)
|
||||
@@ -566,7 +598,7 @@ bool MyGetTempPath(FString &path)
|
||||
{
|
||||
WCHAR s[MAX_PATH + 2];
|
||||
s[0] = 0;
|
||||
- needLength = ::GetTempPathW(MAX_PATH + 1, s);;
|
||||
+ needLength = ::GetTempPathW(MAX_PATH + 1, s);
|
||||
path = us2fs(s);
|
||||
}
|
||||
return (needLength > 0 && needLength <= MAX_PATH);
|
||||
@@ -671,12 +703,29 @@ bool CTempDir::Create(CFSTR prefix)
|
||||
if (!Remove())
|
||||
return false;
|
||||
FString tempPath;
|
||||
- if (!MyGetTempPath(tempPath))
|
||||
- return false;
|
||||
- if (!CreateTempFile(tempPath + prefix, true, _path, NULL))
|
||||
- return false;
|
||||
- _mustBeDeleted = true;
|
||||
- return true;
|
||||
+ if (MyGetTempPath(tempPath))
|
||||
+ {
|
||||
+ if (CreateTempFile(tempPath + prefix, true, _path, NULL))
|
||||
+ {
|
||||
+ _mustBeDeleted = true;
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+ if (GetAppDataDir(tempPath))
|
||||
+ {
|
||||
+ tempPath.Add_PathSepar();
|
||||
+ tempPath += kTempDirName;
|
||||
+ if(CreateComplexDir(tempPath))
|
||||
+ {
|
||||
+ tempPath.Add_PathSepar();
|
||||
+ if (CreateTempFile(tempPath + prefix, true, _path, NULL))
|
||||
+ {
|
||||
+ _mustBeDeleted = true;
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ return false;
|
||||
}
|
||||
|
||||
bool CTempDir::Remove()
|
||||
diff --git a/CPP/Windows/FileDir.h b/CPP/Windows/FileDir.h
|
||||
index b13d1cc..1d87bbf 100644
|
||||
--- a/CPP/Windows/FileDir.h
|
||||
+++ b/CPP/Windows/FileDir.h
|
||||
@@ -13,6 +13,7 @@ namespace NDir {
|
||||
|
||||
bool GetWindowsDir(FString &path);
|
||||
bool GetSystemDir(FString &path);
|
||||
+bool GetAppDataDir(FString &path);
|
||||
|
||||
bool SetDirTime(CFSTR path, const FILETIME *cTime, const FILETIME *aTime, const FILETIME *mTime);
|
||||
bool SetFileAttrib(CFSTR path, DWORD attrib);
|
BIN
etc/7zSD.sfx
Normal file
BIN
etc/7zSD.sfx
Normal file
Binary file not shown.
BIN
etc/7za.exe
Normal file
BIN
etc/7za.exe
Normal file
Binary file not shown.
@ -1,214 +0,0 @@
|
||||
; ///////////////////////////////////////////////////////////////////////////////
|
||||
; // Simple x264 Launcher
|
||||
; // Copyright (C) 2004-2016 LoRd_MuldeR <MuldeR2@GMX.de>
|
||||
; //
|
||||
; // This program is free software; you can redistribute it and/or modify
|
||||
; // it under the terms of the GNU General Public License as published by
|
||||
; // the Free Software Foundation; either version 2 of the License, or
|
||||
; // (at your option) any later version.
|
||||
; //
|
||||
; // This program is distributed in the hope that it will be useful,
|
||||
; // but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
; // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
; // GNU General Public License for more details.
|
||||
; //
|
||||
; // You should have received a copy of the GNU General Public License along
|
||||
; // with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
; // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
; //
|
||||
; // http://www.gnu.org/licenses/gpl-2.0.txt
|
||||
; ///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
;--------------------------------
|
||||
;Basic Defines
|
||||
;--------------------------------
|
||||
|
||||
!ifndef X264_BUILD
|
||||
!error "X264_BUILD is not defined !!!"
|
||||
!endif
|
||||
!ifndef X264_DATE
|
||||
!error "X264_DATE is not defined !!!"
|
||||
!endif
|
||||
!ifndef X264_OUTPUT_FILE
|
||||
!error "X264_OUTPUT_FILE is not defined !!!"
|
||||
!endif
|
||||
!ifndef X264_SOURCE_FILE
|
||||
!error "X264_SOURCE_FILE is not defined !!!"
|
||||
!endif
|
||||
!ifndef X264_UPX_PATH
|
||||
!error "X264_UPX_PATH is not defined !!!"
|
||||
!endif
|
||||
|
||||
;Web-Site
|
||||
!define MyWebSite "http://mulder.at.gg/"
|
||||
|
||||
;Installer file name
|
||||
!define InstallerFileName "$PLUGINSDIR\x264_x64-SETUP-r${X264_BUILD}.exe"
|
||||
|
||||
;--------------------------------
|
||||
;Includes
|
||||
;--------------------------------
|
||||
|
||||
!include `LogicLib.nsh`
|
||||
!include `StdUtils.nsh`
|
||||
|
||||
|
||||
;--------------------------------
|
||||
;Installer Attributes
|
||||
;--------------------------------
|
||||
|
||||
XPStyle on
|
||||
RequestExecutionLevel user
|
||||
InstallColors /windows
|
||||
Name "Simple x264 Launcher [Build #${X264_BUILD}]"
|
||||
OutFile "${X264_OUTPUT_FILE}"
|
||||
BrandingText "${X264_DATE} / Build #${X264_BUILD}"
|
||||
Icon "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
|
||||
ChangeUI all "${NSISDIR}\Contrib\UIs\sdbarker_tiny.exe"
|
||||
ShowInstDetails nevershow
|
||||
AutoCloseWindow true
|
||||
InstallDir ""
|
||||
|
||||
|
||||
;--------------------------------
|
||||
;Page Captions
|
||||
;--------------------------------
|
||||
|
||||
SubCaption 0 " "
|
||||
SubCaption 1 " "
|
||||
SubCaption 2 " "
|
||||
SubCaption 3 " "
|
||||
SubCaption 4 " "
|
||||
|
||||
|
||||
;--------------------------------
|
||||
;Compressor
|
||||
;--------------------------------
|
||||
|
||||
!packhdr "$%TEMP%\exehead.tmp" '"${X264_UPX_PATH}\upx.exe" --brute "$%TEMP%\exehead.tmp"'
|
||||
|
||||
|
||||
;--------------------------------
|
||||
;Reserved Files
|
||||
;--------------------------------
|
||||
|
||||
ReserveFile "${NSISDIR}\Plugins\System.dll"
|
||||
ReserveFile "${NSISDIR}\Plugins\StdUtils.dll"
|
||||
ReserveFile "${NSISDIR}\Plugins\SelfDel.dll"
|
||||
|
||||
|
||||
;--------------------------------
|
||||
;Version Info
|
||||
;--------------------------------
|
||||
|
||||
!searchreplace PRODUCT_VERSION_DATE "${X264_DATE}" "-" "."
|
||||
VIProductVersion "${PRODUCT_VERSION_DATE}.${X264_BUILD}"
|
||||
|
||||
VIAddVersionKey "Author" "LoRd_MuldeR <mulder2@gmx.de>"
|
||||
VIAddVersionKey "Comments" "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version."
|
||||
VIAddVersionKey "CompanyName" "Free Software Foundation"
|
||||
VIAddVersionKey "FileDescription" "Simple x264 Launcher [Build #${X264_BUILD}]"
|
||||
VIAddVersionKey "FileVersion" "${PRODUCT_VERSION_DATE}.${X264_BUILD}"
|
||||
VIAddVersionKey "LegalCopyright" "Copyright 2004-2016 LoRd_MuldeR"
|
||||
VIAddVersionKey "LegalTrademarks" "GNU"
|
||||
VIAddVersionKey "OriginalFilename" "x264_x64.${X264_DATE}.exe"
|
||||
VIAddVersionKey "ProductName" "Simple x264 Launcher"
|
||||
VIAddVersionKey "ProductVersion" "Build #${X264_BUILD} (${X264_DATE})"
|
||||
VIAddVersionKey "Website" "${MyWebSite}"
|
||||
|
||||
|
||||
;--------------------------------
|
||||
;Installer initialization
|
||||
;--------------------------------
|
||||
|
||||
Section "-LaunchTheInstaller"
|
||||
SetDetailsPrint textonly
|
||||
DetailPrint "Launching installer, please stay tuned..."
|
||||
SetDetailsPrint listonly
|
||||
|
||||
InitPluginsDir
|
||||
SetOutPath "$PLUGINSDIR"
|
||||
|
||||
${StdUtils.TestParameter} $R0 "Update"
|
||||
${If} "$R0" == "true"
|
||||
SetFileAttributes "$EXEPATH" FILE_ATTRIBUTE_NORMAL
|
||||
SelfDel::del /RMDIR
|
||||
${EndIf}
|
||||
|
||||
SetOverwrite on
|
||||
File "/oname=${InstallerFileName}" "${X264_SOURCE_FILE}"
|
||||
|
||||
; --------
|
||||
|
||||
${If} "$EXEFILE" == "x264_launcher.exe"
|
||||
MessageBox MB_ICONSTOP|MB_TOPMOST "Sorry, you must NOT rename the installation program to 'x264_launcher.exe'. Please re-rename the installer executable file (e.g. to 'x264_x64-Setup.exe') and then try again!"
|
||||
Quit
|
||||
${EndIf}
|
||||
|
||||
; --------
|
||||
|
||||
${StdUtils.GetAllParameters} $R9 0
|
||||
${IfThen} "$R9" == "too_long" ${|} StrCpy $R9 "" ${|}
|
||||
|
||||
${IfNot} "$R9" == ""
|
||||
DetailPrint "Parameters: $R9"
|
||||
${EndIf}
|
||||
|
||||
; --------
|
||||
|
||||
${Do}
|
||||
SetOverwrite ifdiff
|
||||
File "/oname=${InstallerFileName}" "${X264_SOURCE_FILE}"
|
||||
|
||||
DetailPrint "ExecShellWait: ${InstallerFileName}"
|
||||
${StdUtils.ExecShellWaitEx} $R1 $R2 "${InstallerFileName}" "open" '$R9'
|
||||
DetailPrint "Result: $R1 ($R2)"
|
||||
|
||||
${IfThen} $R1 == "no_wait" ${|} Goto RunSuccess ${|}
|
||||
|
||||
${If} $R1 == "ok"
|
||||
Sleep 333
|
||||
HideWindow
|
||||
${StdUtils.WaitForProcEx} $R1 $R2
|
||||
Goto RunSuccess
|
||||
${EndIf}
|
||||
|
||||
MessageBox MB_RETRYCANCEL|MB_ICONSTOP|MB_TOPMOST "Failed to launch the installer. Please try again!" IDCANCEL FallbackMode
|
||||
${Loop}
|
||||
|
||||
|
||||
; -----------
|
||||
|
||||
FallbackMode:
|
||||
|
||||
DetailPrint "Installer not launched yet, trying fallback mode!"
|
||||
|
||||
SetOverwrite ifdiff
|
||||
File "/oname=${InstallerFileName}" "${X264_SOURCE_FILE}"
|
||||
|
||||
ClearErrors
|
||||
ExecShell "open" "${InstallerFileName}" '$R9' SW_SHOWNORMAL
|
||||
IfErrors 0 RunSuccess
|
||||
|
||||
ClearErrors
|
||||
ExecShell "" "${InstallerFileName}" '$R9' SW_SHOWNORMAL
|
||||
IfErrors 0 RunSuccess
|
||||
|
||||
; --------
|
||||
|
||||
SetDetailsPrint both
|
||||
DetailPrint "Failed to launch installer :-("
|
||||
SetDetailsPrint listonly
|
||||
|
||||
SetErrorLevel 1
|
||||
SetOutPath "$TEMP"
|
||||
Abort "Aborted."
|
||||
|
||||
; --------
|
||||
|
||||
RunSuccess:
|
||||
|
||||
Delete /REBOOTOK "${InstallerFileName}"
|
||||
SetErrorLevel 0
|
||||
SetOutPath "$TEMP"
|
||||
SectionEnd
|
@ -26,7 +26,7 @@
|
||||
#define VER_X264_MAJOR 2
|
||||
#define VER_X264_MINOR 7
|
||||
#define VER_X264_PATCH 5
|
||||
#define VER_X264_BUILD 1053
|
||||
#define VER_X264_BUILD 1054
|
||||
|
||||
#define VER_X264_PORTABLE_EDITION (0)
|
||||
|
||||
|
@ -179,7 +179,7 @@ REM ///////////////////////////////////////////////////////////////////////////
|
||||
"%NSIS_PATH%\makensis.exe" "/DX264_UPX_PATH=%UPX3_PATH%" "/DX264_DATE=%ISO_DATE%" "/DX264_BUILD=%BUILD_NO%" "/DX264_OUTPUT_FILE=%OUT_PATH%.sfx" "/DX264_SOURCE_PATH=%PACK_PATH%" "%~dp0\etc\setup\setup.nsi"
|
||||
if not "%ERRORLEVEL%"=="0" goto BuildError
|
||||
|
||||
"%NSIS_PATH%\makensis.exe" "/DX264_UPX_PATH=%UPX3_PATH%" "/DX264_DATE=%ISO_DATE%" "/DX264_BUILD=%BUILD_NO%" "/DX264_OUTPUT_FILE=%OUT_PATH%.exe" "/DX264_SOURCE_FILE=%OUT_PATH%.sfx" "%~dp0\etc\setup\wrapper.nsi"
|
||||
call "%~dp0\etc\7zSD.cmd" "%OUT_PATH%.sfx" "%OUT_PATH%.exe" "Simple x264/x265 Launcher" "x264_launcher-setup-r%BUILD_NO%"
|
||||
if not "%ERRORLEVEL%"=="0" goto BuildError
|
||||
|
||||
attrib +R "%OUT_PATH%.exe"
|
||||
|
Loading…
Reference in New Issue
Block a user