瀏覽代碼

Removed RegDLLEXE since we don't need it anymore (was only used pre Windows 2000).

Martijn Laan 13 年之前
父節點
當前提交
a96adc181d

+ 1 - 8
Projects/Main.pas

@@ -2,7 +2,7 @@ unit Main;
 
 
 {
 {
   Inno Setup
   Inno Setup
-  Copyright (C) 1997-2011 Jordan Russell
+  Copyright (C) 1997-2012 Jordan Russell
   Portions by Martijn Laan
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
   For conditions of distribution and use, see LICENSE.TXT.
 
 
@@ -1335,13 +1335,6 @@ begin
        Win32ErrorString(ErrorCode)]));
        Win32ErrorString(ErrorCode)]));
   end;
   end;
 
 
-  { Extract RegDLL EXE }
-  {$IFNDEF UNICODE}
-  {$R RegDLLEXE.res}
-  Filename := Subdir + '\_RegDLL.tmp';
-  SaveResourceToTempFile('REGDLL_EXE', Filename);
-  {$ENDIF}
-
   { Extract 64-bit helper EXE, if one is available for the current processor
   { Extract 64-bit helper EXE, if one is available for the current processor
     architecture }
     architecture }
   ResName := GetHelperResourceName;
   ResName := GetHelperResourceName;

+ 0 - 28
Projects/RegDLL/RegDLL.manifest.txt

@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
-<dependency>
-    <dependentAssembly>
-        <assemblyIdentity
-            type="win32"
-            name="Microsoft.Windows.Common-Controls"
-            version="6.0.0.0"
-            processorArchitecture="x86"
-            publicKeyToken="6595b64144ccf1df"
-            language="*"
-        />
-    </dependentAssembly>
-</dependency>
-<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
-    <security>
-        <requestedPrivileges>
-            <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
-        </requestedPrivileges>
-    </security>
-</trustInfo>
-<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
-    <application>
-        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
-        <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
-    </application>
-</compatibility>
-</assembly>

+ 0 - 213
Projects/RegDLL/RegDLL.vcproj

@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="RegDLL"
-	ProjectGUID="{89E109D1-69EC-4519-BD7A-5FA090A59273}"
-	RootNamespace="RegDLL"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug"
-			IntermediateDirectory="Debug"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
-				MinimalRebuild="true"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="comctl32.lib"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="true"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TerminalServerAware="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release"
-			IntermediateDirectory="Release"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="1"
-				FavorSizeOrSpeed="2"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="comctl32.lib"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="true"
-				GenerateDebugInformation="false"
-				SubSystem="2"
-				TerminalServerAware="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\RegDLL.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath=".\RegDLL.rc"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>

+ 0 - 176
Projects/RegDLL/Regdll.c

@@ -1,176 +0,0 @@
-/*
-  Inno Setup
-  Copyright (C) 1997-2012 Jordan Russell
-  Portions by Martijn Laan
-  For conditions of distribution and use, see LICENSE.TXT.
-
-  RegDLL process, called by RegDLL unit
-
-  Compiled on Visual Studio 2005
-*/
-
-#include <windows.h>
-#include <commctrl.h>
-
-typedef struct {
-	DWORD Version;
-	DWORD Size;
-	DWORD Result;
-	DWORD ResultCode;
-	BOOL Unregister;
-	BOOL FailCriticalErrors;
-	CHAR Filename[4096];
-	CHAR Directory[4096];
-} REG_PROCESS_DATA;
-
-#define REG_PROCESS_DATA_VERSION 3
-
-// REG_PROCESS_DATA Result values
-#define rrOleInitializeFailed 1
-#define rrLoadLibraryFailed 2
-#define rrGetProcAddressFailed 3
-#define rrDllFunctionCalled 4
-
-// Process exit codes, full DWORD
-#define ecSuccess 0x1C9B28DA
-
-// Process exit codes, high word
-#define ecMapFailed 1
-#define ecMutexWaitFailed 2
-#define ecMutexWaitUnexpectedResult 3
-#define ecWrongVersionOrSize 4
-
-LPTSTR GetCommandTail(void)
-{
-	LPTSTR CmdLine = GetCommandLine();
-	BOOL InQuote = FALSE;
-	while (*CmdLine) {
-		if (!InQuote && *CmdLine <= ' ') break;
-		if (*CmdLine == '"') InQuote = !InQuote;
-		CmdLine++;
-	}
-	while (*CmdLine && *CmdLine <= ' ') {
-		CmdLine++;
-	}
-	return CmdLine;
-}
-
-LPTSTR ExtractHandleValue(LPTSTR CmdLine, HANDLE *OutHandle)
-{
-	UINT_PTR Result = 0;
-	while (*CmdLine >= '0' && *CmdLine <= '9') {
-		Result *= 10;
-		Result += (*CmdLine - '0');
-		CmdLine++;
-	}
-	while (*CmdLine && *CmdLine <= ' ') {
-		CmdLine++;
-	}
-	*OutHandle = (HANDLE)Result;
-	return CmdLine;
-}
-
-LONG Main(void)
-{
-	LPTSTR Args;
-	HANDLE MapHandle, MutexHandle;
-	REG_PROCESS_DATA *Data;
-	DWORD WaitResult;
-	HRESULT OleInitResult;
-	HMODULE LibHandle;
-
-	// Work around bug in Windows XP Gold & SP1: If the application manifest
-	// specifies COMCTL32.DLL version 6.0 (to enable visual styles), we must
-	// call InitCommonControls() to ensure that we actually link to
-	// COMCTL32.DLL, otherwise calls to MessageBox() fail. (XP SP2 appears
-	// to fix this.)
-	InitCommonControls();
-
-	// Extract the two handle values from the command line
-	Args = GetCommandTail();
-	Args = ExtractHandleValue(Args, &MapHandle);
-	ExtractHandleValue(Args, &MutexHandle);
-
-	// Map shared section
-	Data = MapViewOfFile(MapHandle, FILE_MAP_WRITE, 0, 0, sizeof(*Data));
-	if (Data == NULL) {
-		return MAKELONG(GetLastError(), ecMapFailed);
-	}
-
-	// Acquire mutex
-	WaitResult = WaitForSingleObject(MutexHandle, INFINITE);
-	if (WaitResult == WAIT_FAILED) {
-		return MAKELONG(GetLastError(), ecMutexWaitFailed);
-	}
-	if (WaitResult != WAIT_OBJECT_0) {
-		return MAKELONG(WaitResult, ecMutexWaitUnexpectedResult);
-	}
-
-	// Check structure version number and size
-	if (Data->Version != REG_PROCESS_DATA_VERSION ||
-		Data->Size != sizeof(*Data)) {
-		return MAKELONG(0, ecWrongVersionOrSize);
-	}
-
-	// Initialize OLE. Regsvr32 does this, and it's needed when registering
-	// comcat.dll on stock Windows 98. Its DllRegisterServer export
-	// forwards to ole32.dll; if ole32.dll isn't loaded, GetProcAddress
-	// fails.
-	OleInitResult = OleInitialize(NULL);
-	if (SUCCEEDED(OleInitResult)) {
-		// Set error mode
-		SetErrorMode(Data->FailCriticalErrors ?
-			SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS :
-			SEM_NOOPENFILEERRORBOX);
-
-		// Initialize current directory
-		if (*Data->Directory) {
-			SetCurrentDirectoryA(Data->Directory);
-		}
-
-		// Load & register the DLL
-		LibHandle = LoadLibraryExA(Data->Filename, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
-		if (LibHandle) {
-			typedef HRESULT (STDAPICALLTYPE *DLLREGISTERSERVER)(void);
-			DLLREGISTERSERVER RegisterServerProc;
-
-			RegisterServerProc = (DLLREGISTERSERVER)GetProcAddress(LibHandle,
-				Data->Unregister ? "DllUnregisterServer" : "DllRegisterServer");
-			if (RegisterServerProc) {
-				Data->ResultCode = (*RegisterServerProc)();
-				Data->Result = rrDllFunctionCalled;
-			} else {
-				Data->ResultCode = GetLastError();
-				Data->Result = rrGetProcAddressFailed;
-			}
-
-			FreeLibrary(LibHandle);
-		} else {
-			Data->ResultCode = GetLastError();
-			Data->Result = rrLoadLibraryFailed;
-		}
-
-		OleUninitialize();
-	} else {
-		Data->ResultCode = OleInitResult;
-		Data->Result = rrOleInitializeFailed;
-	}
-
-	// Release the mutex after all changes have been made to the record. This
-	// should impose a "release" memory barrier on architectures that require
-	// it.	
-	ReleaseMutex(MutexHandle);
-
-	return ecSuccess;
-}
-
-int WinMainCRTStartup(void)
-{
-	LONG Result = Main();
-
-	// Good idea to call ExitProcess because it'll terminate any other
-	// threads the system might've created. A simple "return" won't.
-	ExitProcess(Result);
-
-	return Result;
-}

+ 0 - 1
Projects/RegDLL/Regdll.rc

@@ -1 +0,0 @@
-1 24 RegDLL.manifest.txt

+ 0 - 20
Projects/RegDLL/Regdll.sln

@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RegDLL", "RegDLL.vcproj", "{89E109D1-69EC-4519-BD7A-5FA090A59273}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Release|Win32 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{89E109D1-69EC-4519-BD7A-5FA090A59273}.Debug|Win32.ActiveCfg = Debug|Win32
-		{89E109D1-69EC-4519-BD7A-5FA090A59273}.Debug|Win32.Build.0 = Debug|Win32
-		{89E109D1-69EC-4519-BD7A-5FA090A59273}.Release|Win32.ActiveCfg = Release|Win32
-		{89E109D1-69EC-4519-BD7A-5FA090A59273}.Release|Win32.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal

+ 0 - 5
Projects/RegDLLEXE.rc

@@ -1,5 +0,0 @@
-// $jrsoftware: issrc/Projects/RegDLLEXE.rc,v 1.1 2005/10/25 22:04:27 jr Exp $
-//
-// Contains the RegDLL EXE used by the RegDLL unit
-
-REGDLL_EXE RCDATA RegDLL\Release\RegDLL.exe

二進制
Projects/RegDLLEXE.res


+ 3 - 144
Projects/Regdll.pas

@@ -2,14 +2,11 @@ unit RegDLL;
 
 
 {
 {
   Inno Setup
   Inno Setup
-  Copyright (C) 1997-2008 Jordan Russell
+  Copyright (C) 1997-2012 Jordan Russell
   Portions by Martijn Laan
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
   For conditions of distribution and use, see LICENSE.TXT.
 
 
-  Registers 32-bit/64-bit DLL-based OLE servers in a child process (either
-  regsvr32.exe or our own _RegDLL.tmp, depending on the Windows version)
-
-  $jrsoftware: issrc/Projects/RegDLL.pas,v 1.7 2008/10/11 20:30:45 jr Exp $
+  Registers 32-bit/64-bit DLL-based OLE servers in a child process (regsvr32.exe)
 }
 }
 
 
 interface
 interface
@@ -77,131 +74,6 @@ begin
       Format('0x%x', [ExitCode])));
       Format('0x%x', [ExitCode])));
 end;
 end;
 
 
-{$IFNDEF UNICODE}
-procedure RegisterServerUsingRegDLL(const AUnregister: Boolean;
-  const Filename: String; const AFailCriticalErrors: Boolean);
-type
-  { This record is prepared and passed to the child process via shared memory.
-    The child process modifies the 'out' fields as appropriate. }
-  PRegProcessData = ^TRegProcessData;
-  TRegProcessData = record
-    Version: DWORD;                     { [in]  = RegProcessDataVersion }
-    Size: DWORD;                        { [in]  = SizeOf(TRegProcessData) }
-    Result: DWORD;                      { [out] Result of registration (rr*) }
-    ResultCode: DWORD;                  { [out] Extended error code }
-    Unregister: BOOL;                   { [in]  False if registering, True if unreg. }
-    FailCriticalErrors: BOOL;           { [in]  Controls error mode }
-    Filename: array[0..4095] of AnsiChar;   { [in]  DLL filename }
-    Directory: array[0..4095] of AnsiChar;  { [in]  Directory to change to }
-  end;
-const
-  RegProcessDataVersion = 3;
-
-  { TRegProcessData Result values }
-  rrOleInitializeFailed = 1;
-  rrLoadLibraryFailed = 2;
-  rrGetProcAddressFailed = 3;
-  rrDllFunctionCalled = 4;
-
-  { Process exit codes, full DWORD }
-  ecSuccess = $1C9B28DA;
-
-  RegFunctionNames: array[Boolean] of PChar =
-    ('DllRegisterServer', 'DllUnregisterServer');
-
-  InheritableSecurity: TSecurityAttributes = (
-    nLength: SizeOf(InheritableSecurity); lpSecurityDescriptor: nil;
-    bInheritHandle: True);
-var
-  TrueValue: BOOL;
-  MutexHandle, MapHandle: THandle;
-  Data: PRegProcessData;
-  ExeFilename, CmdLine: String;
-  StartupInfo: TStartupInfo;
-  ProcessInfo: TProcessInformation;
-  WaitResult, ExitCode: DWORD;
-begin
-  Log('Spawning _RegDLL.tmp');
-  MapHandle := 0;
-  Data := nil;
-  { This TrueValue nonsense is to work around a bug in CreateMutex:
-    it doesn't interpret -1 (what D3+ passes for True) as TRUE, only 1. }
-  Integer(TrueValue) := 1;
-  MutexHandle := CreateMutex(@InheritableSecurity, TrueValue, nil);
-  if MutexHandle = 0 then
-    Win32ErrorMsg('CreateMutex');
-  try
-    MapHandle := CreateFileMapping(INVALID_HANDLE_VALUE, @InheritableSecurity,
-      PAGE_READWRITE, 0, SizeOf(Data^), nil);
-    if MapHandle = 0 then
-      Win32ErrorMsg('CreateFileMapping');
-    Data := MapViewOfFile(MapHandle, FILE_MAP_WRITE, 0, 0, SizeOf(Data^));
-    if Data = nil then
-      Win32ErrorMsg('MapViewOfFile');
-
-    FillChar(Data^, SizeOf(Data^), 0);
-    Data.Version := RegProcessDataVersion;
-    Data.Size := SizeOf(Data^);
-    Data.Unregister := AUnregister;
-    Data.FailCriticalErrors := AFailCriticalErrors;
-    StrPLCopy(Data.Filename, Filename, (SizeOf(Data.Filename) div SizeOf(Data.Filename[0])) - 1);
-    { For consistency with regsvr32-based registration, we no longer change
-      to the directory containing the DLL: }
-    //StrPLCopy(Data.Directory, PathExtractDir(Filename), (SizeOf(Data.Directory) div SizeOf(Data.Directory[0])) - 1);
-    { We are the initial owner of the mutex. Release the mutex after all
-      changes have been made to the record. This should impose a "release"
-      memory barrier on architectures that require it. }
-    if not ReleaseMutex(MutexHandle) then
-      Win32ErrorMsg('ReleaseMutex');
-
-    ExeFilename := AddBackslash(TempInstallDir) + '_isetup\_RegDLL.tmp';
-    CmdLine := Format('_RegDLL.tmp %u %u', [MapHandle, MutexHandle]);
-    FillChar(StartupInfo, SizeOf(StartupInfo), 0);
-    StartupInfo.cb := SizeOf(StartupInfo);
-    if not CreateProcess(PChar(ExeFilename), PChar(CmdLine), nil, nil,
-       True, CREATE_DEFAULT_ERROR_MODE, nil, PChar(GetSystemDir),
-       StartupInfo, ProcessInfo) then
-      Win32ErrorMsg('CreateProcess');
-    CloseHandle(ProcessInfo.hThread);
-    ExitCode := WaitForAndCloseProcessHandle(ProcessInfo.hProcess);
-    if ExitCode <> ecSuccess then
-      InternalErrorFmt('REGDLL failed with exit code 0x%x', [ExitCode]);
-    { Acquire the mutex ourself to ensure that all writes made to the record
-      by the child process are visible to us in a multiprocessor scenario.
-      (If we successfully obtain the mutex, then the child process has called
-      ReleaseMutex, which imposes a "release" memory barrier, flushing prior
-      writes.) }
-    WaitResult := WaitForSingleObject(MutexHandle, INFINITE);
-    if WaitResult <> WAIT_OBJECT_0 then
-      InternalErrorFmt('REGDLL mutex wait failed (%d, %d)', [WaitResult, GetLastError]);
-
-    case Data.Result of
-      rrOleInitializeFailed: begin
-          RaiseOleError('OleInitialize', Data.ResultCode);
-        end;
-      rrLoadLibraryFailed: begin
-          Win32ErrorMsgEx('LoadLibrary', Data.ResultCode);
-        end;
-      rrGetProcAddressFailed: begin
-          Win32ErrorMsgEx('GetProcAddress', Data.ResultCode);
-        end;
-      rrDllFunctionCalled: begin
-          if FAILED(Data.ResultCode) then
-            RaiseOleError(RegFunctionNames[AUnregister], Data.ResultCode);
-        end;
-    else
-      InternalErrorFmt('REGDLL returned unknown result code %d', [Data.Result]);
-    end;
-  finally
-    if Assigned(Data) then
-      UnmapViewOfFile(Data);
-    if MapHandle <> 0 then
-      CloseHandle(MapHandle);
-    CloseHandle(MutexHandle);
-  end;
-end;
-{$ENDIF}
-
 procedure RegisterServer(const AUnregister: Boolean; const AIs64Bit: Boolean;
 procedure RegisterServer(const AUnregister: Boolean; const AIs64Bit: Boolean;
   const Filename: String; const AFailCriticalErrors: Boolean);
   const Filename: String; const AFailCriticalErrors: Boolean);
 var
 var
@@ -218,21 +90,8 @@ begin
       a lot of DLLs a require, we must use regsvr32.exe to handle the
       a lot of DLLs a require, we must use regsvr32.exe to handle the
       (un)registration.
       (un)registration.
       On Windows 2000/XP/2003, use regsvr32.exe as well for behavioral &
       On Windows 2000/XP/2003, use regsvr32.exe as well for behavioral &
-      error message consistency.
-      On earlier versions, keep using RegDLL. Windows 95 and NT 4.0 (no SP)
-      do not ship with regsvr32.exe. Windows 98 and Me do, but I prefer to
-      treat all 9x OSes the same to simplify testing.
-      Unicode build: Always use regsvr32.exe since there is no Unicode
-      version of RegDLL, and we don't have to worry about pre-2000 Windows
-      versions anyway. }
-    {$IFDEF UNICODE}
+      error message consistency. }
     RegisterServerUsingRegSvr32(AUnregister, AIs64Bit, Filename);
     RegisterServerUsingRegSvr32(AUnregister, AIs64Bit, Filename);
-    {$ELSE}
-    if (WindowsVersion >= Cardinal($05000000)) or AIs64Bit then
-      RegisterServerUsingRegSvr32(AUnregister, AIs64Bit, Filename)
-    else
-      RegisterServerUsingRegDLL(AUnregister, Filename, AFailCriticalErrors);
-    {$ENDIF}
   finally
   finally
     WindowDisabler.Free;
     WindowDisabler.Free;
   end;
   end;

+ 2 - 4
Projects/Regsvr.pas

@@ -2,13 +2,11 @@ unit RegSvr;
 
 
 {
 {
   Inno Setup
   Inno Setup
-  Copyright (C) 1997-2007 Jordan Russell
+  Copyright (C) 1997-2012 Jordan Russell
   Portions by Martijn Laan
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
   For conditions of distribution and use, see LICENSE.TXT.
 
 
   Registers OLE servers & type libraries after a reboot
   Registers OLE servers & type libraries after a reboot
-
-  $jrsoftware: issrc/Projects/RegSvr.pas,v 1.14 2007/12/08 00:33:47 jr Exp $
 }
 }
 
 
 interface
 interface
@@ -163,7 +161,7 @@ begin
       Application.Title := SetupMessages[msgSetupAppTitle];
       Application.Title := SetupMessages[msgSetupAppTitle];
 
 
       try
       try
-        { Extract RegDLL and the 64-bit helper }
+        { Extract the 64-bit helper }
         CreateTempInstallDir;
         CreateTempInstallDir;
 
 
         F := TTextFileReader.Create(ListFilename, fdOpenExisting, faRead, fsRead);
         F := TTextFileReader.Create(ListFilename, fdOpenExisting, faRead, fsRead);

+ 0 - 3
readme.txt

@@ -215,9 +215,6 @@ code with scintilla-2.22-patch.txt applied.
 Projects\HelperEXEs.res - Compiled by Visual Studio 2005 from the
 Projects\HelperEXEs.res - Compiled by Visual Studio 2005 from the
 Projects\Helper directory and then stored in a compiled resource file.
 Projects\Helper directory and then stored in a compiled resource file.
 
 
-Projects\RegDLLEXE.res - Compiled by Visual Studio 2005 from the Projects\RegDLL
-directory and then stored in a compiled resource file.
-
 Projects\LzmaDecode\LzmaDecodeInno.obj - See Projects\LzmaDecode\compiling.txt.
 Projects\LzmaDecode\LzmaDecodeInno.obj - See Projects\LzmaDecode\compiling.txt.
 
 
 Projects\lzma2\Decoder\ISLzmaDec.obj, Projects\lzma2\Decoder\ISLzma2Dec.obj -
 Projects\lzma2\Decoder\ISLzmaDec.obj, Projects\lzma2\Decoder\ISLzma2Dec.obj -

+ 1 - 0
whatsnew.htm

@@ -32,6 +32,7 @@ For conditions of distribution and use, see <a href="http://www.jrsoftware.org/f
 <li>Updated the official Catalan, Czech, Danish, Finnish, French (Standard), German, Hebrew, Hungarian, Italian, Japanese, Norwegian (Bokmal), Polish, Portuguese (Brazil), Portuguese (Portugal), Russian, Serbian (Cyrillic), Serbian (Latin), Slovenian, Spanish, and Ukrainian translations for the changes introduced by the previous version.</li>
 <li>Updated the official Catalan, Czech, Danish, Finnish, French (Standard), German, Hebrew, Hungarian, Italian, Japanese, Norwegian (Bokmal), Polish, Portuguese (Brazil), Portuguese (Portugal), Russian, Serbian (Cyrillic), Serbian (Latin), Slovenian, Spanish, and Ukrainian translations for the changes introduced by the previous version.</li>
 <li>Demoted the official <a href="http://jrsoftware.org/files/istrans/Basque-1/Basque-1-5.1.11.isl">Basque</a> and <a href="http://jrsoftware.org/files/istrans/Slovak-6/Slovak-6-5.1.11.isl">Slovak</a> translations to unofficial because of a lack of updates by the maintainers. To send updates yourself, see <a href="http://news.jrsoftware.org/read/article.php?id=2295&group=jrsoftware.innosetup.translations#2295">this post</a> for what needs updating and use <a href="http://www.jrsoftware.org/files/istrans/send2.php">this form</a> to send updates (or use <a href="https://github.com/jrsoftware/issrc" target="_blank">GitHub</a>). See the <a href="http://www.jrsoftware.org/files/istrans/">Inno Setup Translations</a> page for more information.
 <li>Demoted the official <a href="http://jrsoftware.org/files/istrans/Basque-1/Basque-1-5.1.11.isl">Basque</a> and <a href="http://jrsoftware.org/files/istrans/Slovak-6/Slovak-6-5.1.11.isl">Slovak</a> translations to unofficial because of a lack of updates by the maintainers. To send updates yourself, see <a href="http://news.jrsoftware.org/read/article.php?id=2295&group=jrsoftware.innosetup.translations#2295">this post</a> for what needs updating and use <a href="http://www.jrsoftware.org/files/istrans/send2.php">this form</a> to send updates (or use <a href="https://github.com/jrsoftware/issrc" target="_blank">GitHub</a>). See the <a href="http://www.jrsoftware.org/files/istrans/">Inno Setup Translations</a> page for more information.
 <li><i>Fix:</i> The <i>Preparing to Install</i> wizard page's detection of files that need to be updated but are in use or queued (by some other installation) to be replaced or deleted on the next restart did not work for [Files] and [InstallDelete] entries with a <tt>Components</tt> or <tt>Tasks</tt> parameter.
 <li><i>Fix:</i> The <i>Preparing to Install</i> wizard page's detection of files that need to be updated but are in use or queued (by some other installation) to be replaced or deleted on the next restart did not work for [Files] and [InstallDelete] entries with a <tt>Components</tt> or <tt>Tasks</tt> parameter.
+<li>Minor tweaks.</li>
 </ul>
 </ul>
 
 
 <p><a name="5.5.0"></a><span class="ver">5.5.0 </span><span class="date">(2012-05-29)</span></p>
 <p><a name="5.5.0"></a><span class="ver">5.5.0 </span><span class="date">(2012-05-29)</span></p>