Re-organized project directory structure.

This commit is contained in:
LoRd_MuldeR 2016-12-20 16:53:09 +01:00
parent 2717fc9504
commit 5fd4e486cb
27 changed files with 29 additions and 1620 deletions

View File

@ -1,48 +0,0 @@
@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

View File

@ -1,387 +0,0 @@
CPP/7zip/Bundles/SFXSetup/Compat.xml | 1 +
CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp | 51 +++++++++++++---
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 | 97 ++++++++++++++++++++++++++----
CPP/Windows/FileDir.h | 1 +
10 files changed, 137 insertions(+), 30 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..53608cf 100644
--- a/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp
+++ b/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp
@@ -37,6 +37,26 @@ static CFSTR kTempDirPrefix = FTEXT("7zS");
#define _SHELL_EXECUTE
+static HWND GetCurrentHwnd(void)
+{
+ HWND result = ::GetActiveWindow();
+ if(!(result && IsWindowVisible(result)))
+ {
+ for (int i = 0; i < 256; ++i)
+ {
+ ::Sleep(1); /*some delay*/
+ if(const HWND hwnd = ::GetForegroundWindow())
+ {
+ if(IsWindowVisible(result = hwnd))
+ {
+ break; /*success*/
+ }
+ }
+ }
+ }
+ return result;
+}
+
static bool ReadDataString(CFSTR fileName, LPCSTR startID,
LPCSTR endID, AString &stringResult)
{
@@ -145,7 +165,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 +211,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 +220,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 +264,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 +308,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..dae9f93 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);
@@ -625,6 +657,35 @@ static bool CreateTempFile(CFSTR prefix, bool addRandom, FString &path, NIO::COu
return false;
}
+static bool CreateTempFileSafely(CFSTR prefix, bool addRandom, FString &path, NIO::COutFile *outFile)
+{
+ FString tempPath;
+ if (MyGetTempPath(tempPath))
+ {
+ if (CreateTempFile(tempPath + prefix, addRandom, path, outFile))
+ {
+ return true;
+ }
+ }
+ for(Byte retry = 0; retry < 2; ++retry)
+ {
+ if (retry ? GetWindowsDir(tempPath) : GetAppDataDir(tempPath))
+ {
+ tempPath.Add_PathSepar();
+ tempPath += kTempDirName;
+ if(CreateComplexDir(tempPath))
+ {
+ tempPath.Add_PathSepar();
+ if (CreateTempFile(tempPath + prefix, addRandom, path, outFile))
+ {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+}
+
bool CTempFile::Create(CFSTR prefix, NIO::COutFile *outFile)
{
if (!Remove())
@@ -639,10 +700,7 @@ bool CTempFile::CreateRandomInTempFolder(CFSTR namePrefix, NIO::COutFile *outFil
{
if (!Remove())
return false;
- FString tempPath;
- if (!MyGetTempPath(tempPath))
- return false;
- if (!CreateTempFile(tempPath + namePrefix, true, _path, outFile))
+ if (!CreateTempFileSafely(namePrefix, true, _path, outFile))
return false;
_mustBeDeleted = true;
return true;
@@ -652,8 +710,16 @@ bool CTempFile::Remove()
{
if (!_mustBeDeleted)
return true;
- _mustBeDeleted = !DeleteFileAlways(_path);
- return !_mustBeDeleted;
+ for(UInt32 i = 0; i < 256; ++i)
+ {
+ if(DeleteFileAlways(_path))
+ {
+ _mustBeDeleted = false;
+ return true;
+ }
+ ::Sleep(1);
+ }
+ return false;
}
bool CTempFile::MoveTo(CFSTR name, bool deleteDestBefore)
@@ -670,10 +736,7 @@ bool CTempDir::Create(CFSTR prefix)
{
if (!Remove())
return false;
- FString tempPath;
- if (!MyGetTempPath(tempPath))
- return false;
- if (!CreateTempFile(tempPath + prefix, true, _path, NULL))
+ if (!CreateTempFileSafely(prefix, true, _path, NULL))
return false;
_mustBeDeleted = true;
return true;
@@ -683,8 +746,16 @@ bool CTempDir::Remove()
{
if (!_mustBeDeleted)
return true;
- _mustBeDeleted = !RemoveDirWithSubItems(_path);
- return !_mustBeDeleted;
+ for(UInt32 i = 0; i < 256; ++i)
+ {
+ if(RemoveDirWithSubItems(_path))
+ {
+ _mustBeDeleted = false;
+ return true;
+ }
+ ::Sleep(1);
+ }
+ return false;
}
}}}
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);

Binary file not shown.

Binary file not shown.

View File

@ -1,56 +0,0 @@
7-Zip
~~~~~
License for use and distribution
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7-Zip Copyright (C) 1999-2016 Igor Pavlov.
Licenses for files are:
1) 7z.dll: GNU LGPL + unRAR restriction
2) All other files: GNU LGPL
The GNU LGPL + unRAR restriction means that you must follow both
GNU LGPL rules and unRAR restriction rules.
Note:
You can use 7-Zip on any computer, including a computer in a commercial
organization. You don't need to register or pay for 7-Zip.
GNU LGPL information
--------------------
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You can receive a copy of the GNU Lesser General Public License from
http://www.gnu.org/
unRAR restriction
-----------------
The decompression engine for RAR archives was developed using source
code of unRAR program.
All copyrights to original unRAR code are owned by Alexander Roshal.
The license for original unRAR code has the following restriction:
The unRAR sources cannot be used to re-create the RAR compression algorithm,
which is proprietary. Distribution of modified unRAR sources in separate form
or as a part of other software is permitted, provided that it is clearly
stated in the documentation and source comments that the code may
not be used to develop a RAR (WinRAR) compatible archiver.
--
Igor Pavlov

View File

@ -1,51 +0,0 @@
7-Zip 16.04
-----------
7-Zip is a file archiver for Windows NT / 2000 / 2003 / 2008 / 2012 / XP / Vista / 7 / 8 / 10.
7-Zip Copyright (C) 1999-2016 Igor Pavlov.
The main features of 7-Zip:
- High compression ratio in the new 7z format
- Supported formats:
- Packing / unpacking: 7z, XZ, BZIP2, GZIP, TAR, ZIP and WIM.
- Unpacking only: AR, ARJ, CAB, CHM, CPIO, CramFS, DMG, EXT, FAT, GPT, HFS,
IHEX, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, QCOW2, RAR,
RPM, SquashFS, UDF, UEFI, VDI, VHD, VMDK, WIM, XAR and Z.
- Fast compression and decompression
- Self-extracting capability for 7z format
- Strong AES-256 encryption in 7z and ZIP formats
- Integration with Windows Shell
- Powerful File Manager
- Powerful command line version
- Localizations for 85 languages
7-Zip is free software distributed under the GNU LGPL (except for unRar code).
Read License.txt for more information about license.
This distribution package contains the following files:
7zFM.exe - 7-Zip File Manager
7-zip.dll - Plugin for Windows Shell
7-zip32.dll - Plugin for Windows Shell (32-bit plugin for 64-bit system)
7zg.exe - GUI module
7z.exe - Command line version
7z.dll - 7-Zip engine module
7z.sfx - SFX module (Windows version)
7zCon.sfx - SFX module (Console version)
License.txt - License information
readme.txt - This file
History.txt - History of 7-Zip
7-zip.chm - User's Manual in HTML Help format
descript.ion - Description for files
Lang\en.ttt - English (base) localization file
Lang\*.txt - Localization files
---
End of document

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,9 +0,0 @@
<?xml version ="1.0"?>
<!-- This allows mt.exe to run on machines with the CLR v4 installed but not 1.1 or 2.0 -->
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v1.1.4322"/>
</startup>
</configuration>

Binary file not shown.

View File

@ -1,470 +0,0 @@
<!-- manual page source format generated by PolyglotMan v3.2, -->
<!-- available at http://polyglotman.sourceforge.net/ -->
<html>
<head>
<title>RHASH(1) manual page</title>
</head>
<body bgcolor='white'>
<a href='#toc'>Table of Contents</a><p>
<h2><a name='sect0' href='#toc0'>Name</a></h2>
rhash - calculate/check CRC32, MD5, SHA1, GOST, TTH, BTIH or other hash
sums.
<h2><a name='sect1' href='#toc1'>Synopsis</a></h2>
<b>rhash [</b> <i>option</i> <b>]... [</b> <i>file</i> <b>]...</b>
<h2><a name='sect2' href='#toc2'>Description</a></h2>
<b>RHash</b> (Recursive Hasher)
computes and verifies various message digests (hash sums) of files. Supported
message digests include CRC32, MD4, MD5, SHA1, SHA256, SHA512, SHA3, Tiger,
DC++ TTH, BitTorrent BTIH, AICH, ED2K, GOST R 34.11-94, RIPEMD-160, HAS-160,
EDON-R 256/512, Whirlpool, Snefru-128/256.
<p> The program can create and verify
Magnet links and eDonkey ed2k:// links, see --magnet and --ed2k-link options.
<p> A dash string parameter &lsquo;-&rsquo; is interpreted as stdin file.
<p> By default <b>rhash</b>
prints sums in SFV format with CRC32 hash sum only. The format can be changed
by options --bsd, --magnet, --simple, --printf, --template. To output all sums use
the &lsquo;-a&rsquo; option.
<p> The default output format can also be changed by renaming
the program or placing a hardlink/symlink to it with a name containing
strings &lsquo;crc32&rsquo;, &lsquo;md4&rsquo;, &lsquo;md5&rsquo;, &lsquo;sha1&rsquo;, &lsquo;sha256&rsquo; &lsquo;sha512&rsquo;, &lsquo;tiger&rsquo;, &lsquo;tth&rsquo;, &lsquo;btih&rsquo;, &lsquo;aich&rsquo;, &lsquo;ed2k&rsquo;,
&lsquo;ed2k-link&rsquo;, &lsquo;gost&rsquo;, &lsquo;gost-cryptopro&rsquo;, &lsquo;ripemd160&rsquo;, &lsquo;has160&rsquo;, &lsquo;whirlpool&rsquo;, &lsquo;edonr256&rsquo;,
&lsquo;edonr512&rsquo;, &lsquo;snefru128&rsquo;, &lsquo;snefru256&rsquo;, &lsquo;sfv&rsquo; or &lsquo;magnet&rsquo;.
<p>
<h2><a name='sect3' href='#toc3'>Program Mode Options</a></h2>
The
default mode is to print hash sums for all files and directory trees specified
by command line. The mode can be set by the following options.
<dl>
<dt>-c, --check</dt>
<dd>Check
hash files specified by command line. RHash can verify hash files in SFV
and BSD formats, standard MD5 and SHA1 files, and text files containing
magnet or ed2k links (one link per line). Empty lines and lines starting
with &lsquo;;&rsquo; or &lsquo;#&rsquo; are skipped. In fact RHash can verify most hash files generated
by itself without formating options --printf and --template. </dd>
<dt>-u, --update</dt>
<dd>Update
hash files specified by command line. The program calculates and appends
hashes to the updated hash file in the format specified by formating options.
Hashes are calculated for those files from the same directory as the hash
file, which are yet not present in it. </dd>
<dt>-k, --check-embedded</dt>
<dd>Verify files by crc32
sum embedded in their names. </dd>
<dt>--torrent</dt>
<dd>Create a torrent file for each processed
file. </dd>
<dt>-h, --help</dt>
<dd>Help: print help screen and exit. </dd>
<dt>-V, --version</dt>
<dd>Version: print version
and exit. </dd>
<dt>-B, --benchmark</dt>
<dd>Run benchmark for selected algorithm(s).
<p> </dd>
</dl>
<h2><a name='sect4' href='#toc4'>Hash Sums
Options</a></h2>
<dl>
<dt>-C, --crc32</dt>
<dd>CRC32: calculate and print CRC32 hash sum. </dd>
<dt>--md4</dt>
<dd>MD4: calculate
and print MD4 hash sum. </dd>
<dt>-M, --md5</dt>
<dd>MD5: calculate and print MD5 hash sum. </dd>
<dt>-H, --sha1</dt>
<dd>SHA1:
calculate and print SHA1 hash sum. </dd>
<dt>--sha224, --sha256, --sha384, --sha512</dt>
<dd>Calculate
specified SHA2 hash sum. </dd>
<dt>--sha3-224, --sha3-256, --sha3-384, --sha3-512</dt>
<dd>Calculate specified
SHA3 hash sum. </dd>
<dt>--tiger</dt>
<dd>Tiger: calculate and print Tiger hash sum. </dd>
<dt>-T, --tth</dt>
<dd>TTH:
calculate and print DC++ TTH sum. </dd>
<dt>--btih</dt>
<dd>BTIH: calculate and print BitTorrent
Info Hash. </dd>
<dt>-A, --aich</dt>
<dd>AICH: calculate and print AICH hash. </dd>
<dt>-E, --ed2k</dt>
<dd>ED2K: calculate
and print eDonkey 2000 hash sum. </dd>
<dt>-L, --ed2k-link</dt>
<dd>eDonkey link: calculate and
print eDonkey link. </dd>
<dt>-W, --whirlpool</dt>
<dd>Whirlpool: calculate and print Whirlpool
hash sum. </dd>
<dt>-G, --gost</dt>
<dd>GOST: calculate and print GOST R 34.11-94 hash, the Russian
GOST standard hash function. </dd>
<dt>--gost-cryptopro</dt>
<dd>GOST-CRYPTOPRO: calculate and print
CryptoPro version of the GOST R 34.11-94 hash function. </dd>
<dt>--ripemd160</dt>
<dd>RIPEMD-160:
calculate and print RIPEMD-160 hash sum. </dd>
<dt>--has160</dt>
<dd>HAS-160: calculate and print
HAS-160 hash sum. </dd>
<dt>--snefru128, --snefru256</dt>
<dd>SNEFRU: calculate and print SNEFRU-128/256
hash sums. </dd>
<dt>--edonr256, --edonr512</dt>
<dd>EDON-R: calculate and print EDON-R 256/512 hash
sums.
<p> </dd>
<dt>-a, --all</dt>
<dd>Calculate all supported hash sums. </dd>
<dt>--list-hashes</dt>
<dd>List names of all
supported hashes, one per line.
<p> </dd>
</dl>
<h2><a name='sect5' href='#toc5'>Miscellaneous Options</a></h2>
<dl>
<dt>-r, --recursive</dt>
<dd>Process
directories recursively. </dd>
<dt>-v, --verbose</dt>
<dd>Be verbose. </dd>
<dt>--percents</dt>
<dd>Show percents, while
calculating or checking sums </dd>
<dt>--skip-ok</dt>
<dd>Don&rsquo;t print OK messages for successfully
verified files. </dd>
<dt>-i, --ignore-case</dt>
<dd>Ignore case of filenames when updating crc
files. </dd>
<dt>--speed</dt>
<dd>Print per-file and the total processing speed. </dd>
<dt>-e, --embed-crc</dt>
<dd>Rename
files by inserting crc32 sum into name. </dd>
<dt>--embed-crc-delimiter=&lt;delimiter&gt;</dt>
<dd>Insert
specified &lt;delimiter&gt; before a crc sum in the --embed-crc mode, default is
white space. The &lt;delimiter&gt; can be a character or empty string. </dd>
<dt>--path-separator=&lt;separator&gt;</dt>
<dd>Use
specified path separator to display paths. </dd>
<dt>-q, --accept=&lt;list&gt;</dt>
<dd>Set a comma-delimited
list of extensions of the files to process. </dd>
<dt>--exclude=&lt;list&gt;</dt>
<dd>Set a comma-delimited
list of extensions of the files to exclude from processing. </dd>
<dt>-t, --crc-accept=&lt;list&gt;</dt>
<dd>Set
a comma-delimited list of extensions of the hash files to verify. </dd>
<dt>--maxdepth=&lt;levels&gt;</dt>
<dd>Descend
at most &lt;levels&gt; (a non-negative integer) levels of directories below the
command line arguments. &lsquo;--maxdepth 0&rsquo; means only apply the tests and actions
to the command line arguments. </dd>
<dt>-o, --output=&lt;file-path&gt;</dt>
<dd>Set the file to output
calculated hashes and verification results to. </dd>
<dt>-l, --log=&lt;file-path&gt;</dt>
<dd>Set the file
to log errors and verbose information to. </dd>
<dt>--openssl=&lt;list&gt;</dt>
<dd>Specify which hash
functions should be calculated using the OpenSSL library. The &lt;list&gt; is a
comma delimited list of hash names, but only those supported by openssl
are allowed, e.g. md4, md5, sha1, sha256, ripemd160. See openssl documentation
for the full list. </dd>
<dt>--gost-reverse</dt>
<dd>Reverse bytes in hexadecimal output of the
GOST hash sum. The most significant bytes of the hash will be printed first.
Default order is the least significant bytes first. </dd>
<dt>--bt-batch=&lt;file-path&gt;</dt>
<dd>Turn
on torrent batch mode (implies torrent mode). Calculates batch-torrent for
the files specified at command line and saves the torrent file to the file-path.
The option -r &lt;directory&gt; can be useful in this mode. </dd>
<dt>--bt-private</dt>
<dd>Generate BTIH
for a private BitTorrent tracker. </dd>
<dt>--bt-piece-length</dt>
<dd>Set the <i>piece length</i> value
for torrent file. </dd>
<dt>--bt-announce=&lt;announce-url&gt;</dt>
<dd>Add a tracker announce URL to the
created torrent file(s). Several URLs can be passed by specifying the option
mutltiple times. This option doesn&rsquo;t change the BTIH hash. </dd>
<dt>--benchmark-raw</dt>
<dd>Switch
benchmark output format to be a machine-readable tab-delimited text with
hash function name, speed, cpu clocks per byte. This option works only if
the --benchmark option was specified. </dd>
<dt>-- (double dash)</dt>
<dd>Mark the end of command
line options. All parameters following the double dash are interpreted as
files or directories. It is typically used to process filenames starting
with a dash &lsquo;-&rsquo;. Alternatively you can specify &rsquo;./&rsquo; or full path before such files,
so they will not look like options anymore.
<p> </dd>
</dl>
<h2><a name='sect6' href='#toc6'>Output Format Options</a></h2>
<dl>
<dt>--ansi</dt>
<dd>Use
Windows codepage for output. </dd>
<dt>--oem</dt>
<dd>Use DOS (OEM) codepage for output. </dd>
<dt>--utf8</dt>
<dd>Use
UTF-8 codepage for output. </dd>
<dt>--sfv</dt>
<dd>Print hash sums in the SFV (Simple File Verification)
output format (default). But unlike common SFV file, not only CRC32, but
any hash sums specified by options can be printed. </dd>
<dt>-m, --magnet</dt>
<dd>Print hash sums
formatted as magnet links. </dd>
<dt>--bsd</dt>
<dd>Use BSD output format. Each hash sum is printed
on separate line after hash name and file&rsquo;s path, enclosed in parentheses.
</dd>
<dt>--simple</dt>
<dd>Use simple output format. Each line will consist of filename and hash
sums specified by options. </dd>
<dt>--uppercase</dt>
<dd>Print hash sums in upper case. </dd>
<dt>--lowercase</dt>
<dd>Print
hash sums in lower case. </dd>
<dt>--template=&lt;file&gt;</dt>
<dd>Read printf-like template from given
&lt;file&gt;. See the --printf option. </dd>
<dt>-p, --printf=&lt;format&gt;</dt>
<dd>Format: print <i>format</i> string
the standard output, interpreting &lsquo;\&rsquo; escapes and &lsquo;%&rsquo; directives. The escapes
and directives are: <blockquote></dd>
<dt>\n</dt>
<dd>Newline. </dd>
<dt>\r</dt>
<dd>Carriage return. </dd>
<dt>\t</dt>
<dd>Horizontal tab. </dd>
<dt>\\</dt>
<dd>A literal
backslash (&lsquo;\&rsquo;). </dd>
<dt>\0</dt>
<dd>ASCII NUL. </dd>
<dt>\NNN</dt>
<dd>The character which octal ASCII code is NNN.
</dd>
<dt>\xNN</dt>
<dd>The character which hexadecimal ASCII code is NN. </dd>
</dl>
<p>
A &lsquo;\&rsquo; character followed
by any other character is treated as an ordinary character, so they both
are printed.
<dl>
<dt>%%</dt>
<dd>A literal percent sign. </dd>
<dt>%p</dt>
<dd>File&rsquo;s path. </dd>
<dt>%f</dt>
<dd>File&rsquo;s name. </dd>
<dt>%u</dt>
<dd>URL-encoded
filename. </dd>
<dt>%s</dt>
<dd>File&rsquo;s size in bytes. </dd>
<dt>%{mtime}</dt>
<dd>File&rsquo;s last modification time. </dd>
<dt>%a
or %A</dt>
<dd>AICH hash sum. </dd>
<dt>%c or %C</dt>
<dd>CRC32 hash sum. Use %c for lowercase and %C
for uppercase characters. </dd>
<dt>%g or %G</dt>
<dd>GOST R 34.11-94 hash. </dd>
<dt>%h or %H</dt>
<dd>SHA1 hash. </dd>
<dt>%e
or %E</dt>
<dd>ED2K hash sum. </dd>
<dt>%l or %L</dt>
<dd>EDonkey ed2k://... link. </dd>
<dt>%m or %M</dt>
<dd>MD5 hash. </dd>
<dt>%r or
%R</dt>
<dd>RIPEMD-160 hash. </dd>
<dt>%t or %T</dt>
<dd>TTH sum. </dd>
<dt>%w or %W</dt>
<dd>Whirlpool hash. </dd>
<dt>%{md4}, %{sha-224},
%{sha-256}, %{sha-384}, %{sha-512}, %{sha3-224},</dt>
<dd> %{sha3-256}, %{sha3-384}, %{sha3-512}
%{tiger}, %{btih}, %{gost-cryptopro},<br>
%{has160}, %{snefru128}, %{snefru256}, %{edon-r256}, %{edon-r512}"<br>
Print specified hash sum. Actually the %{&lt;hash sum&gt;} directive can print
any supported hash sum. If a hash sum name starts with a capital letter
then the hash is printed in uppercase, e.g. %{TTH}, %{Sha-512}. </dd>
<dt>%x&lt;hash&gt;, %b&lt;hash&gt;,
%B&lt;hash&gt;, %@&lt;hash&gt;</dt>
<dd>Use one of these prefixes to output a hash sum in hexadecimal,
base32, base64 or raw (binary) format respectively, e.g. %b{md4}, %BH or
%xT. </dd>
</dl>
</blockquote>
<p>
<h2><a name='sect7' href='#toc7'>Config File</a></h2>
RHash looks for a config file on Windows at %APPDATA%\RHash\rhashrc,
<p>%HOMEDRIVE%%HOMEPATH%\rhashrc
<p> and on Linux/Unix at $HOME/.rhashrc and /etc/rhashrc.
<p> The config file consists of lines formatted as <blockquote>variable = value </blockquote>
<p> where
the <i>variable</i> can be a name of any command line option, like <i>magnet,</i> <i>printf,</i>
<i>percents,</i> etc. A boolean variable can be set to true by a value &lsquo;on&rsquo;, &lsquo;yes&rsquo;
or &lsquo;true&rsquo;, any other value sets the variable to false.
<p> Empty lines and lines
starting with &lsquo;#&rsquo; or &lsquo;;&rsquo; are ignored.
<p> Example config file: <br>
<pre># This is a comment line
percents = on
crc-accept = .sfv,.md5,.sha1,.sha256,.sha512,.tth,.magnet
</pre>
<p>
<h2><a name='sect8' href='#toc8'>Author</a></h2>
Aleksey Kravchenko &lt;rhash.admin@gmail.com&gt;
<h2><a name='sect9' href='#toc9'>See Also</a></h2>
<i><b>md5sum</b>(1)</i> <i><b>cksfv</b>(1)</i>
<i><b>ed2k_hash</b>(1)</i>
<h2><a name='sect10' href='#toc10'>Bugs</a></h2>
Bug reports are welcome! Send them by email or post to
the SourceForge Bug Tracking System <i><i>http://sourceforge.net/projects/rhash/</i></i>
<p>
<hr><p>
<a name='toc'><b>Table of Contents</b></a><p>
<ul>
<li><a name='toc0' href='#sect0'>Name</a></li>
<li><a name='toc1' href='#sect1'>Synopsis</a></li>
<li><a name='toc2' href='#sect2'>Description</a></li>
<li><a name='toc3' href='#sect3'>Program Mode Options</a></li>
<li><a name='toc4' href='#sect4'>Hash Sums Options</a></li>
<li><a name='toc5' href='#sect5'>Miscellaneous Options</a></li>
<li><a name='toc6' href='#sect6'>Output Format Options</a></li>
<li><a name='toc7' href='#sect7'>Config File</a></li>
<li><a name='toc8' href='#sect8'>Author</a></li>
<li><a name='toc9' href='#sect9'>See Also</a></li>
<li><a name='toc10' href='#sect10'>Bugs</a></li>
</ul>
</body>
</html>

Binary file not shown.

Binary file not shown.

View File

@ -1,138 +0,0 @@
-----BEGIN PGP SIGNED MESSAGE-----
ooooo ooo ooooooooo. ooooooo ooooo
`888' `8' `888 `Y88. `8888 d8'
888 8 888 .d88' Y888..8P
888 8 888ooo88P' `8888'
888 8 888 .8PY888.
`88. .8' 888 d8' `888b
`YbodP' o888o o888o o88888o
The Ultimate Packer for eXecutables
Copyright (c) 1996-2000 Markus Oberhumer & Laszlo Molnar
http://wildsau.idv.uni-linz.ac.at/mfx/upx.html
http://www.nexus.hu/upx
http://upx.tsx.org
PLEASE CAREFULLY READ THIS LICENSE AGREEMENT, ESPECIALLY IF YOU PLAN
TO MODIFY THE UPX SOURCE CODE OR USE A MODIFIED UPX VERSION.
ABSTRACT
========
UPX and UCL are copyrighted software distributed under the terms
of the GNU General Public License (hereinafter the "GPL").
The stub which is imbedded in each UPX compressed program is part
of UPX and UCL, and contains code that is under our copyright. The
terms of the GNU General Public License still apply as compressing
a program is a special form of linking with our stub.
As a special exception we grant the free usage of UPX for all
executables, including commercial programs.
See below for details and restrictions.
COPYRIGHT
=========
UPX and UCL are copyrighted software. All rights remain with the authors.
UPX is Copyright (C) 1996-2000 Markus Franz Xaver Johannes Oberhumer
UPX is Copyright (C) 1996-2000 Laszlo Molnar
UCL is Copyright (C) 1996-2000 Markus Franz Xaver Johannes Oberhumer
GNU GENERAL PUBLIC LICENSE
==========================
UPX and the UCL library are free software; you can redistribute them
and/or modify them 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.
UPX and UCL are distributed in the hope that they 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; see the file COPYING.
SPECIAL EXCEPTION FOR COMPRESSED EXECUTABLES
============================================
The stub which is imbedded in each UPX compressed program is part
of UPX and UCL, and contains code that is under our copyright. The
terms of the GNU General Public License still apply as compressing
a program is a special form of linking with our stub.
Hereby Markus F.X.J. Oberhumer and Laszlo Molnar grant you special
permission to freely use and distribute all UPX compressed programs
(including commercial ones), subject to the following restrictions:
1. You must compress your program with a completely unmodified UPX
version; either with our precompiled version, or (at your option)
with a self compiled version of the unmodified UPX sources as
distributed by us.
2. This also implies that the UPX stub must be completely unmodfied, i.e.
the stub imbedded in your compressed program must be byte-identical
to the stub that is produced by the official unmodified UPX version.
3. The decompressor and any other code from the stub must exclusively get
used by the unmodified UPX stub for decompressing your program at
program startup. No portion of the stub may get read, copied,
called or otherwise get used or accessed by your program.
ANNOTATIONS
===========
- You can use a modified UPX version or modified UPX stub only for
programs that are compatible with the GNU General Public License.
- We grant you special permission to freely use and distribute all UPX
compressed programs. But any modification of the UPX stub (such as,
but not limited to, removing our copyright string or making your
program non-decompressible) will immediately revoke your right to
use and distribute a UPX compressed program.
- UPX is not a software protection tool; by requiring that you use
the unmodified UPX version for your proprietary programs we
make sure that any user can decompress your program. This protects
both you and your users as nobody can hide malicious code -
any program that cannot be decompressed is highly suspicious
by definition.
- You can integrate all or part of UPX and UCL into projects that
are compatible with the GNU GPL, but obviously you cannot grant
any special exceptions beyond the GPL for our code in your project.
- We want to actively support manufacturers of virus scanners and
similar security software. Please contact us if you would like to
incorporate parts of UPX or UCL into such a product.
Markus F.X.J. Oberhumer Laszlo Molnar
markus.oberhumer@jk.uni-linz.ac.at ml1050@cdata.tvnet.hu
Linz, Austria, 25 Feb 2000
-----BEGIN PGP SIGNATURE-----
Version: 2.6.3ia
Charset: noconv
iQCVAwUBOLaLS210fyLu8beJAQFYVAP/ShzENWKLTvedLCjZbDcwaBEHfUVcrGMI
wE7frMkbWT2zmkdv9hW90WmjMhOBu7yhUplvN8BKOtLiolEnZmLCYu8AGCwr5wBf
dfLoClxnzfTtgQv5axF1awp4RwCUH3hf4cDrOVqmAsWXKPHtm4hx96jF6L4oHhjx
OO03+ojZdO8=
=CS52
-----END PGP SIGNATURE-----

View File

@ -1,139 +0,0 @@
ooooo ooo ooooooooo. ooooooo ooooo
`888' `8' `888 `Y88. `8888 d8'
888 8 888 .d88' Y888..8P
888 8 888ooo88P' `8888'
888 8 888 .8PY888.
`88. .8' 888 d8' `888b
`YbodP' o888o o888o o88888o
The Ultimate Packer for eXecutables
Copyright (c) 1996-2016 Markus Oberhumer, Laszlo Molnar & John Reiser
https://upx.github.io
WELCOME
=======
Welcome to UPX !
Please don't forget to read the file LICENSE - UPX is distributed
under the GNU General Public License (GPL) with special exceptions
allowing the distribution of all compressed executables, including
commercial programs.
INTRODUCTION
============
UPX is an advanced executable file compressor. UPX will typically
reduce the file size of programs and DLLs by around 50%-70%, thus
reducing disk space, network load times, download times and
other distribution and storage costs.
Programs and libraries compressed by UPX are completely self-contained
and run exactly as before, with no runtime or memory penalty for most
of the supported formats.
UPX supports a number of different executable formats, including
Windows 95/98/ME/NT/2000/XP/CE programs and DLLs, DOS programs,
and Linux executables and kernels.
UPX is free software distributed under the term of the GNU General
Public License. Full source code is available.
UPX may be distributed and used freely, even with commercial applications.
See the UPX License Agreement for details.
UPX is rated number one in the well known Archive Comparison Test. Visit
http://compression.ca/ .
UPX aims to be Commercial Quality Freeware.
SHORT DOCUMENTATION
===================
'upx program.exe' will compress a program or DLL. For best compression
results try 'upx --brute program.exe'.
Please see the file UPX.DOC for the full documentation. The files
NEWS and BUGS also contain various tidbits of information.
DISCLAIMER
==========
UPX comes with ABSOLUTELY NO WARRANTY; for details see the file LICENSE.
Having said that, we think that UPX is quite stable now. Indeed we
have compressed lots of files without any problems. Also, the
current version has undergone several months of beta testing -
actually it's almost 8 years since our first public beta.
This is the first production quality release, and we plan that future
releases will be backward compatible with this version.
Please report all problems or suggestions to the authors. Thanks.
THE FUTURE
==========
- AArch64 (64-bit ARM) for Linux and iOS.
- The Linux approach could probably get ported to a lot of other Unix
variants, at least for other i386 architectures it shouldn't be too
much work. If someone sends me a fresh hard disk and an official
FreeBSD/OpenBSD/NetBSD/Solaris/BeOS... CD I might take a look at it ;-)
- We will *NOT* add any sort of protection and/or encryption.
This only gives people a false feeling of security because
by definition all protectors/compressors can be broken.
And don't trust any advertisement of authors of other executable
compressors about this topic - just do a websearch on "unpackers"...
- Fix all remaining bugs - keep your reports coming ;-)
- See the file PROJECTS in the source code distribution if you want
to contribute.
COPYRIGHT
=========
Copyright (C) 1996-2016 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2016 Laszlo Molnar
Copyright (C) 2000-2016 John F. Reiser
This program may be used freely, and you are welcome to
redistribute it under certain conditions.
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
UPX License Agreement for more details.
You should have received a copy of the UPX License Agreement along
with this program; see the file LICENSE. If not, visit the UPX home page.
Share and enjoy,
Markus & Laszlo & John
Markus F.X.J. Oberhumer Laszlo Molnar
<markus@oberhumer.com> <ezerotven+github@gmail.com>
John F. Reiser
<jreiser@BitWagon.com>
[ The term UPX is a shorthand for the Ultimate Packer for eXecutables
and holds no connection with potential owners of registered trademarks
or other rights. ]
[ Feel free to contact us if you have commercial compression requirements
or interesting job offers. ]

Binary file not shown.

View File

@ -1,290 +0,0 @@
Verpatch - a tool to patch win32 version resources on .exe or .dll files,
Version: 1.0.15 (25-Oct-2016)
Verpatch is a command line tool for adding and editing the version information
of Windows executable files (applications, DLLs, kernel drivers)
without rebuilding the executable.
It can also add or replace Win32 (native) resources, and do some other
modifications of executable files.
Verpatch sets ERRORLEVEL 0 on success, otherwise errorlevel is non-zero.
Verpatch modifies files in place, so please make copies of precious files.
Command line syntax
===================
verpatch filename [version] [/options]
Where
- filename : any Windows PE file (exe, dll, sys, ocx...) that can have version resource
- version : one to four decimal numbers, separated by dots, ex.: 1.2.3.4
Additional text can follow the numbers; see examples below. Ex.: "1.2.3.4 extra text"
Common Options:
/va - creates a version resource. Use when the file has no version resource at all,
or existing version resource should be replaced.
If this option not specified, verpatch will read version resourse from the file.
/s name "value" - add a version resource string attribute
The name can be either a full attribute name or alias; see below.
/sc "comment" - add or replace Comments string (shortcut for /s Comments "comment")
/pv <version> - specify Product version
where <version> arg has same form as the file version (1.2.3.4 or "1.2.3.4 text")
/high - when less than 4 version numbers, these are higher numbers.
The string representation will have as many components as specified.
Other options:
/fn - preserves Original filename, Internal name in the existing version resource of the file.
/langid <number> - language id for new version resource.
Use with /va. Default is Language Neutral.
<number> is combination of primary and sublanguage IDs. ENU is 1033 or 0x409.
/vo - outputs the version info in RC format to stdout.
This can be used with /xi to dump a version resource without modification.
Output of /vo can be pasted to a .rc file and compiled with rc.
/xi- test mode. does all operations in memory but does not modify the file
/xlb - test mode. Re-parses the version resource after modification.
/rpdb - removes path to the .pdb file in debug information; leaves only file name.
/rf #id file - add or replace a raw binary resource from file (see below)
/noed - do not check for extra data appended to exe file
/vft2 num - specify driver subtype (VFT2_xxx value, see winver.h)
The application type (VFT_xxx) is retained from the existing version resource of the file,
or filled automatically, based on the filename extension (.exe->app, .sys->driver, anything else->dll)
Examples
========
verpatch d:\foo.dll 1.2.33.44
- Sets the file version to 1.2.33.44
The Original file name and Internal name strings are set to "foo.dll".
File foo.dll should already have a version resource (since /va not specified)
verpatch d:\foo.dll 1.2.33 /high
- Sets three higher 3 numbers of the file version.
The 4th number is not changed in the binary version struct,
and the version as string will have three components.
File foo.dll should already have a version resource.
verpatch d:\foo.dll 33.44 /s comment "a comment"
- Replaces only two last numbers of the file version and adds a comment.
File foo.dll should already have a version resource.
verpatch d:\foo.dll "33.44 special release" /pv 1.2.3.4
- same as previous, with additional text in the version argument.
- Product version is also specified
verpatch d:\foo.dll "1.2.33.44" /va /s description "foo.dll"
/s company "My Company" /s copyright "(c) 2009"
- creates or replaces version resource to foo.dll, with several string values.
( all options should be one line)
verpatch d:\foo.dll /vo /xi
- dumps the version resource in RC format, does not update the file.
Misc. functions
================
* Add resource from a file
The /rf switch adds a resource from a file, or replaces a resource with same type and id.
The argument "#id" is a 32-bit hex number, prefixed with #.
Low 16 bits of this value are resource id; can not be 0.
Next 8 bits are resource type: one of RT_xxx symbols in winuser.h, or user defined.
If the type value is 0, RT_RCDATA (10) is assumed.
High 8 bits of the #id arg are reserved0.
The language code of resources added by this switch is 0 (Neutral).
Named resource types and ids are not implemented.
The file is added as opaque binary chunk; the resource size is rounded up to 4 bytes
and padded with zero bytes.
* Handling appended data
The program detects extra data appended to executable files, saves it and appends
again after modifying resources.
Command switch /noed disables checking for extra data.
Such extra data is used by some installers, self-extracting archives and other applications.
However, the way we restore the data may be not compatible with these applications.
Please, verify that executable files that contain extra data work correctly after modification.
Make backup of valuable files before modification.
* Remove the path from debug info (.PDB) string
Use switch /rpdb to remove the path to the .pdb file in debug information; leave only file name.
Remarks
=======
In "patch" mode (no /va option), verpatch replaces the version number in existing file
version info resource with the values given on the command line.
The version resource in the file is parsed, then parameters specified on the command line are applied.
If the file has no version resource, or you want to discard the existing resource, use /va switch.
Quotes surrounding arguments are needed for the command shell (cmd.exe),
for any argument that contains spaces.
Also, other characters should be escaped (ex. &, |, and ^ for cmd.exe).
Null values can be specified as empty string ("").
The command line can become very long, so you may want to use a batch file or script.
See the example batch files.
Verpatch can be run on same PE file any number of times.
The Version argument can be specified as 1 to 4 dot separated decimal numbers.
Additional suffix can follow the version numbers, separated by a dash (-) or space.
If the separator is space, the whole version argument must be enclosed in quotes.
If the switch /high not specified and less than 4 numbers are given,
they are considered as minor numbers.
The higher version parts are retained from existing version resource.
For example, if the existing version info block has version number 1.2.3.4
and 55.66 specified on the command line, the result will be 1.2.55.66.
If the switch /high is specified and less than 4 numbers are given,
they are considered as higher numbers.
For example, if the existing version info has version number 1.2.3.4
and 55.66 /high specified on the command line, the result will be 55.66.3.4.
The /high switch has been added to support the "Semantic Versioning" syntax
as described here: http://semver.org
The "Semantic versioning", however, specifies only 3 parts for the version number,
while Windows version numbers have 4 parts.
Switch /high allows 3-part version numbers with optional "tail" separated by '-' or '+'
but the text representation will not be displayed by Windows Explorer in Vista or newer.
The file version displayed will always have 4 parts.
Verpatch ensures that the version numbers in the binary part
of the version structure and in the string part (as text) are same,
or the text string begins with the same numbers as in the binary part.
By default, Original File Name and Internal File Name are replaced to the actual filename.
Use /fn to preserve existing values in the version resource.
String attribute names for option /s must be language-neutral,
not translations (example: PrivateBuild, not "Private Build Description").
See below for the list of known attrbute names and their aliases.
The examples above use the aliases.
String arguments for File version and Product version parameters are handled
in a special way, the /s switch should not be used to set these:
- The File version can be specified as the 2nd positional argument only
- The Product version can be specified using /pv switch
====================================================================
Known string keys in VS_VERSION_INFO resource
====================================================================
The aliases in the right column can be used with /s switch,
in place of language-neutral (LN) attribute names.
Attribute names are not case sensitive.
-------------------+----+-------------------------------+------------
Lang.Neutral name |note| English translation | Aliases
-------------------+----+-------------------------------+------------
Comments Comments comment
CompanyName Company company
FileDescription E Description description, desc
FileVersion *1 File Version
InternalName Internal Name title
*2 Language
LegalCopyright E Copyright copyright, (c)
LegalTrademarks E Legal Trademarks tm, (tm)
OriginalFilename Original File Name
ProductName Product Name product
ProductVersion *3 Product Version productversion (*)
PrivateBuild Private Build Description pb, private
SpecialBuild Special Build Description sb, build
OleSelfRegister A -
AssemblyVersion N
Notes
*1: FileVersion, ProductVersion should not be specified with /s switch.
See the command line parameters above.
The string values normally begin with same 1.2.3.4 version number as in the binary header,
but can be any text. Explorer of WinXP also displays File Version text in the strings box.
In Win7 or newer, Explorer displays the version numbers from the binary header only.
*2: The "Language" value is the name of the language code specified in the header of the
string block of VS_VERSION_INFO resource (or taken from VarFileInfo block?)
It is displayed by Windows XP Explorer.
*3 When Productversion is specified as a string attribute (/s productversion)
rather than with /pv, the argument string will be put literally.
This can be used to specify leading zeros in version numbers.
E: Displayed by Windows Explorer in Vista+
A: Intended for some API (OleSelfRegister is used in COM object registration)
N: Added by some .NET compilers. This version number is not contained in the
binary part of the version struct and can differ from the file version.
To change it, use switch /s AssemblyVersion [value]. Note: this will not
change the actual .NET assembly version.
====================================================================
Known issues and TO DO's:
=========================
- Does not work on old PE files that have link version 5.x (before VC6?)
No known workaround; this seems to be limitation of Windows UpdateResource API.
Since the UpdateResource API is part of Windows, its behaviour may differ on
different Windows releases. On Win7 SP1 you may get better results than on WinXP.
- Import of version resource does not work if it is not encoded in UTF-16.
- Does not work on files signed with digital certificates (TO DO: warn and remove certificate)
Until we do this, certificates can be removed with 3rd party delcert tool.
- A second version resource may be added to a file that already has a version resource
in other language. Switch /va won't help.
TO DO: ensure that a file has only one version resource!
- When verpatch is invoked from command prompt, or batch file, the string
arguments can contain only ANSI characters, because cmd.exe batch files cannot be
in Unicode format. If you need to include characters not in current locale,
use other shell languages that fully support Unicode (Powershell, vbs, js).
- TO DO: In RC source output (/vo), special characters in strings are not quoted;
so /vo may produce invalid RC input.
- The parser of binary version resources handles only the most common type of structure.
If the parser breaks because of unhandled structure format, try /va switch to
skip reading existing version resource and re-create it from scratch.
Consider using WINE or other open source implementations?
- option to add extra 0 after version strings : "string\0"
(tentative, requested by a reader for some old VB code)
- For files with extra data appended, checksum is not re-calculated.
Such files usually implement their own integrity check.
- Switch /va does not prevent import of existing version resource. Revise.
- When existing version string contains "tail" but the command line parameter does not,
the tail is removed. In previous versions the tail was preserved.
- Running verpatch on certain executables (esp. built with GNU) produce corrupt file
when run on WinXP SP3, but same binaries give good result when run on Win7 or 2008R2.
(Improvement of UpdateResource API?)
Source code
============
The source is provided as a Visual C++ 2013 project, it can be compiled with VC 2008, 2010, 2012 Express and newer.
(The VC 2008 compatible project is in verpatch(vs2008).sln, verpatch.vcproj files. verpatch.sln, .vcxproj are for VC++ 2013).
It demonstrates use of the UpdateResource and imagehlp.dll API.
It does not demonstrate good use of C++, coding style or anything else.
Dependencies on VC features available only in paid versions (before Community editions) have been removed.
UAC note: Verpatch does not require any administrator rights and may not work correctly if run elevated.
~~

Binary file not shown.

View File

@ -26,7 +26,7 @@
#define VER_X264_MAJOR 2 #define VER_X264_MAJOR 2
#define VER_X264_MINOR 7 #define VER_X264_MINOR 7
#define VER_X264_PATCH 7 #define VER_X264_PATCH 7
#define VER_X264_BUILD 1070 #define VER_X264_BUILD 1072
#define VER_X264_PORTABLE_EDITION (0) #define VER_X264_PORTABLE_EDITION (0)

View File

@ -105,7 +105,7 @@ copy /Y "$(SolutionDir)etc\vld\lib\$(Platform)\$(Configuration)\*.manifest" "$(T
<Message>Copy Toolset</Message> <Message>Copy Toolset</Message>
</PostBuildEvent> </PostBuildEvent>
<PreBuildEvent> <PreBuildEvent>
<Command>"$(SolutionDir)etc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 30</Command> <Command>"$(SolutionDir)..\Prerequisites\AutoInc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 30</Command>
<Message>Update Build Number</Message> <Message>Update Build Number</Message>
</PreBuildEvent> </PreBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
@ -143,7 +143,7 @@ copy /Y "$(SolutionDir)etc\vld\lib\$(Platform)\$(Configuration)\*.manifest" "$(T
<EntryPointSymbol>x264_entry_point</EntryPointSymbol> <EntryPointSymbol>x264_entry_point</EntryPointSymbol>
</Link> </Link>
<PreBuildEvent> <PreBuildEvent>
<Command>"$(SolutionDir)etc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 30</Command> <Command>"$(SolutionDir)..\Prerequisites\AutoInc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 30</Command>
</PreBuildEvent> </PreBuildEvent>
<PreBuildEvent> <PreBuildEvent>
<Message>Update Build Number</Message> <Message>Update Build Number</Message>

View File

@ -97,7 +97,7 @@ copy /Y "$(SolutionDir)etc\vld\bin\Win32\*.manifest" "$(TargetDir)"</Command>
<Message>Copy Toolset</Message> <Message>Copy Toolset</Message>
</PostBuildEvent> </PostBuildEvent>
<PreBuildEvent> <PreBuildEvent>
<Command>"$(SolutionDir)etc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 5</Command> <Command>"$(SolutionDir)..\Prerequisites\AutoInc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 5</Command>
<Message>Update Build Number</Message> <Message>Update Build Number</Message>
</PreBuildEvent> </PreBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
@ -135,7 +135,7 @@ copy /Y "$(SolutionDir)etc\vld\bin\Win32\*.manifest" "$(TargetDir)"</Command>
<EntryPointSymbol>x264_entry_point</EntryPointSymbol> <EntryPointSymbol>x264_entry_point</EntryPointSymbol>
</Link> </Link>
<PreBuildEvent> <PreBuildEvent>
<Command>"$(SolutionDir)etc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 5</Command> <Command>"$(SolutionDir)..\Prerequisites\AutoInc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 5</Command>
</PreBuildEvent> </PreBuildEvent>
<PreBuildEvent> <PreBuildEvent>
<Message>Update Build Number</Message> <Message>Update Build Number</Message>

View File

@ -104,7 +104,7 @@ copy /Y "$(SolutionDir)\..\Prerequisites\VisualLeakDetector\bin\$(Platform)\*.ma
<Message>Copy Toolset</Message> <Message>Copy Toolset</Message>
</PostBuildEvent> </PostBuildEvent>
<PreBuildEvent> <PreBuildEvent>
<Command>"$(SolutionDir)etc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 30</Command> <Command>"$(SolutionDir)..\Prerequisites\AutoInc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 30</Command>
<Message>Update Build Number</Message> <Message>Update Build Number</Message>
</PreBuildEvent> </PreBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
@ -142,7 +142,7 @@ copy /Y "$(SolutionDir)\..\Prerequisites\VisualLeakDetector\bin\$(Platform)\*.ma
<EntryPointSymbol>x264_entry_point</EntryPointSymbol> <EntryPointSymbol>x264_entry_point</EntryPointSymbol>
</Link> </Link>
<PreBuildEvent> <PreBuildEvent>
<Command>"$(SolutionDir)etc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 30</Command> <Command>"$(SolutionDir)..\Prerequisites\AutoInc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 30</Command>
</PreBuildEvent> </PreBuildEvent>
<PreBuildEvent> <PreBuildEvent>
<Message>Update Build Number</Message> <Message>Update Build Number</Message>

View File

@ -1,7 +1,7 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14 # Visual Studio 14
VisualStudioVersion = 14.0.24720.0 VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x264_launcher", "x264_launcher_MSVC2015.vcxproj", "{563D953B-CBC3-4C75-AFC2-5BD87531C332}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x264_launcher", "x264_launcher_MSVC2015.vcxproj", "{563D953B-CBC3-4C75-AFC2-5BD87531C332}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject

View File

@ -104,7 +104,7 @@ copy /Y "$(SolutionDir)\..\Prerequisites\VisualLeakDetector\bin\$(Platform)\*.ma
<Message>Copy Toolset</Message> <Message>Copy Toolset</Message>
</PostBuildEvent> </PostBuildEvent>
<PreBuildEvent> <PreBuildEvent>
<Command>"$(SolutionDir)etc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 30</Command> <Command>"$(SolutionDir)..\Prerequisites\AutoInc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 30</Command>
<Message>Update Build Number</Message> <Message>Update Build Number</Message>
</PreBuildEvent> </PreBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
@ -142,7 +142,7 @@ copy /Y "$(SolutionDir)\..\Prerequisites\VisualLeakDetector\bin\$(Platform)\*.ma
<EntryPointSymbol>x264_entry_point</EntryPointSymbol> <EntryPointSymbol>x264_entry_point</EntryPointSymbol>
</Link> </Link>
<PreBuildEvent> <PreBuildEvent>
<Command>"$(SolutionDir)etc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 30</Command> <Command>"$(SolutionDir)..\Prerequisites\AutoInc\auto_inc.exe" VER_X264_BUILD "$(SolutionDir)src\version.h" 30</Command>
</PreBuildEvent> </PreBuildEvent>
<PreBuildEvent> <PreBuildEvent>
<Message>Update Build Number</Message> <Message>Update Build Number</Message>

View File

@ -3,9 +3,6 @@ REM ///////////////////////////////////////////////////////////////////////////
REM // Set Paths REM // Set Paths
REM /////////////////////////////////////////////////////////////////////////// REM ///////////////////////////////////////////////////////////////////////////
set "MSVC_PATH=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC" set "MSVC_PATH=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC"
set "WSDK_PATH=C:\Program Files (x86)\Windows Kits\10"
set "NSIS_PATH=C:\Program Files\NSIS\Unicode"
set "PDOC_PATH=C:\Program Files\Pandoc"
set "TOOLS_VER=140" set "TOOLS_VER=140"
REM ############################################### REM ###############################################
@ -24,16 +21,16 @@ if "%VCINSTALLDIR%"=="" (
echo %%VCINSTALLDIR%% not specified. Please check your MSVC_PATH var! echo %%VCINSTALLDIR%% not specified. Please check your MSVC_PATH var!
goto BuildError goto BuildError
) )
if "%QTDIR%"=="" (
echo %%QTDIR%% not specified. Please check your MSVC_PATH var!
goto BuildError
)
if not exist "%VCINSTALLDIR%\bin\cl.exe" ( if not exist "%VCINSTALLDIR%\bin\cl.exe" (
echo C++ compiler not found. Please check your MSVC_PATH var! echo C++ compiler not found. Please check your MSVC_PATH var!
goto BuildError goto BuildError
) )
if not exist "%PDOC_PATH%\pandoc.exe" ( if "%QTDIR%"=="" (
echo Pandoc binary could not be found. Please check your PDOC_PATH var! echo %%QTDIR%% not specified. Please check your QTDIR var!
goto BuildError
)
if not exist "%QTDIR%\include\QtCore\qglobal.h" (
echo %%QTDIR%% header files not found. Please check your QTDIR var!
goto BuildError goto BuildError
) )
@ -42,11 +39,11 @@ REM // Get current date and time (in ISO format)
REM /////////////////////////////////////////////////////////////////////////// REM ///////////////////////////////////////////////////////////////////////////
set "ISO_DATE=" set "ISO_DATE="
set "ISO_TIME=" set "ISO_TIME="
if not exist "%~dp0\etc\date.exe" BuildError if not exist "%~dp0\..\Prerequisites\GnuWin32\date.exe" BuildError
for /F "tokens=1,2 delims=:" %%a in ('"%~dp0\etc\date.exe" +ISODATE:%%Y-%%m-%%d') do ( for /F "tokens=1,2 delims=:" %%a in ('"%~dp0\..\Prerequisites\GnuWin32\date.exe" +ISODATE:%%Y-%%m-%%d') do (
if "%%a"=="ISODATE" set "ISO_DATE=%%b" if "%%a"=="ISODATE" set "ISO_DATE=%%b"
) )
for /F "tokens=1,2,3,4 delims=:" %%a in ('"%~dp0\etc\date.exe" +ISOTIME:%%T') do ( for /F "tokens=1,2,3,4 delims=:" %%a in ('"%~dp0\..\Prerequisites\GnuWin32\date.exe" +ISOTIME:%%T') do (
if "%%a"=="ISOTIME" set "ISO_TIME=%%b:%%c:%%d" if "%%a"=="ISOTIME" set "ISO_TIME=%%b:%%c:%%d"
) )
if "%ISO_DATE%"=="" goto BuildError if "%ISO_DATE%"=="" goto BuildError
@ -119,20 +116,20 @@ copy "%~dp0\..\Prerequisites\Qt4\v%TOOLS_VER%_xp\Shared\bin\QtXml4.dll"
copy "%~dp0\..\Prerequisites\Qt4\v%TOOLS_VER%_xp\Shared\plugins\imageformats\*.dll" "%PACK_PATH%\imageformats" copy "%~dp0\..\Prerequisites\Qt4\v%TOOLS_VER%_xp\Shared\plugins\imageformats\*.dll" "%PACK_PATH%\imageformats"
del "%PACK_PATH%\imageformats\*d4.dll" 2> NUL del "%PACK_PATH%\imageformats\*d4.dll" 2> NUL
if %TOOLS_VER% GEQ 140 ( if %TOOLS_VER% GEQ 140 (
copy "%WSDK_PATH%\Redist\ucrt\DLLs\x86\*.dll" "%PACK_PATH%" copy "%~dp0\..\Prerequisites\MSVC\redist\ucrt\DLLs\x86\*.dll" "%PACK_PATH%"
) )
REM /////////////////////////////////////////////////////////////////////////// REM ///////////////////////////////////////////////////////////////////////////
REM // Generate Docs REM // Generate Docs
REM /////////////////////////////////////////////////////////////////////////// REM ///////////////////////////////////////////////////////////////////////////
"%PDOC_PATH%\pandoc.exe" --from markdown_github+pandoc_title_block+header_attributes+implicit_figures --to html5 --toc -N --standalone -H "%~dp0\etc\css\style.inc" --output "%PACK_PATH%\README.html" "%~dp0\README.md" "%~dp0\..\Prerequisites\Pandoc\pandoc.exe" --from markdown_github+pandoc_title_block+header_attributes+implicit_figures --to html5 --toc -N --standalone -H "%~dp0\etc\css\style.inc" --output "%PACK_PATH%\README.html" "%~dp0\README.md"
REM /////////////////////////////////////////////////////////////////////////// REM ///////////////////////////////////////////////////////////////////////////
REM // Compress REM // Compress
REM /////////////////////////////////////////////////////////////////////////// REM ///////////////////////////////////////////////////////////////////////////
"%~dp0\etc\upx.exe" --brute "%PACK_PATH%\*.exe" "%~dp0\..\Prerequisites\UPX\upx.exe" --brute "%PACK_PATH%\*.exe"
"%~dp0\etc\upx.exe" --brute "%PACK_PATH%\MUtils32-?.dll "%~dp0\..\Prerequisites\UPX\upx.exe" --brute "%PACK_PATH%\MUtils32-?.dll
"%~dp0\etc\upx.exe" --best "%PACK_PATH%\Qt*.dll" "%~dp0\..\Prerequisites\UPX\upx.exe" --best "%PACK_PATH%\Qt*.dll"
REM /////////////////////////////////////////////////////////////////////////// REM ///////////////////////////////////////////////////////////////////////////
REM // Attributes REM // Attributes
@ -170,20 +167,20 @@ echo. >> "%PACK_PATH%\BUILD_TAG.txt"
echo Build #%BUILD_NO%, created on %ISO_DATE% at %ISO_TIME% >> "%PACK_PATH%\BUILD_TAG.txt" echo Build #%BUILD_NO%, created on %ISO_DATE% at %ISO_TIME% >> "%PACK_PATH%\BUILD_TAG.txt"
echo. >> "%PACK_PATH%\BUILD_TAG.txt" echo. >> "%PACK_PATH%\BUILD_TAG.txt"
echo. >> "%PACK_PATH%\BUILD_TAG.txt" echo. >> "%PACK_PATH%\BUILD_TAG.txt"
"%~dp0\etc\cat.exe" "%~dp0\etc\setup\build.nfo" >> "%PACK_PATH%\BUILD_TAG.txt" "%~dp0\..\Prerequisites\GnuWin32\cat.exe" "%~dp0\etc\setup\build.nfo" >> "%PACK_PATH%\BUILD_TAG.txt"
REM /////////////////////////////////////////////////////////////////////////// REM ///////////////////////////////////////////////////////////////////////////
REM // Build the installer REM // Build the installer
REM /////////////////////////////////////////////////////////////////////////// REM ///////////////////////////////////////////////////////////////////////////
"%NSIS_PATH%\makensis.exe" "/DX264_UPX_PATH=%~dp0\etc\upx.exe" "/DX264_DATE=%ISO_DATE%" "/DX264_BUILD=%BUILD_NO%" "/DX264_OUTPUT_FILE=%OUT_PATH%.sfx" "/DX264_SOURCE_PATH=%PACK_PATH%" "%~dp0\etc\setup\setup.nsi" "%~dp0\..\Prerequisites\NSIS\makensis.exe" "/DX264_UPX_PATH=%~dp0\..\Prerequisites\UPX\upx.exe" "/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 if not "%ERRORLEVEL%"=="0" goto BuildError
call "%~dp0\etc\7zSD.cmd" "%OUT_PATH%.sfx" "%OUT_PATH%.exe" "Simple x264/x265 Launcher" "x264_launcher-setup-r%BUILD_NO%" call "%~dp0\..\Prerequisites\SevenZip\7zSD.cmd" "%OUT_PATH%.sfx" "%OUT_PATH%.exe" "Simple x264/x265 Launcher" "x264_launcher-setup-r%BUILD_NO%"
if not "%ERRORLEVEL%"=="0" goto BuildError if not "%ERRORLEVEL%"=="0" goto BuildError
set "VERPATCH_PRODUCT=Simple x264/x265 Launcher (Setup)" set "VERPATCH_PRODUCT=Simple x264/x265 Launcher (Setup)"
set "VERPATCH_FILEVER=%ISO_DATE:-=.%.%BUILD_NO%" set "VERPATCH_FILEVER=%ISO_DATE:-=.%.%BUILD_NO%"
"%~dp0\etc\verpatch.exe" "%OUT_PATH%.exe" "%VERPATCH_FILEVER%" /pv "%VERPATCH_FILEVER%" /fn /s desc "%VERPATCH_PRODUCT%" /s product "%VERPATCH_PRODUCT%" /s title "x264 Launcher Installer SFX" /s copyright "Copyright (C) 2004-2016 LoRd_MuldeR" /s company "Free Software Foundation" "%~dp0\..\Prerequisites\VerPatch\verpatch.exe" "%OUT_PATH%.exe" "%VERPATCH_FILEVER%" /pv "%VERPATCH_FILEVER%" /fn /s desc "%VERPATCH_PRODUCT%" /s product "%VERPATCH_PRODUCT%" /s title "x264 Launcher Installer SFX" /s copyright "Copyright (C) 2004-2016 LoRd_MuldeR" /s company "Free Software Foundation"
if not "%ERRORLEVEL%"=="0" goto BuildError if not "%ERRORLEVEL%"=="0" goto BuildError
attrib +R "%OUT_PATH%.exe" attrib +R "%OUT_PATH%.exe"
@ -193,7 +190,7 @@ REM ///////////////////////////////////////////////////////////////////////////
REM // Build ZIP package REM // Build ZIP package
REM /////////////////////////////////////////////////////////////////////////// REM ///////////////////////////////////////////////////////////////////////////
pushd "%PACK_PATH%" pushd "%PACK_PATH%"
"%~dp0\etc\zip.exe" -r -9 -z "%OUT_PATH%.zip" "*.*" < "%PACK_PATH%\BUILD_TAG.txt" "%~dp0\..\Prerequisites\GnuWin32\zip.exe" -r -9 -z "%OUT_PATH%.zip" "*.*" < "%PACK_PATH%\BUILD_TAG.txt"
popd popd
if not "%ERRORLEVEL%"=="0" goto BuildError if not "%ERRORLEVEL%"=="0" goto BuildError