xchat-wdk-hexchat-x64.iss 3.81 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
[Setup] 
WizardImageFile=c:\mozilla build\build\xchat-wdk\win32\bitmaps\wizardimage.bmp 
WizardSmallImageFile=c:\mozilla build\build\xchat-wdk\win32\bitmaps\wizardsmallimage.bmp 
AppVerName=XChat-WDK 2.9.0
AppVersion=2.9.0
VersionInfoVersion=2.9.0
OutputBaseFilename=XChat-WDK 2.9.0 x64
SetupIconFile=c:\mozilla build\build\xchat-wdk\xchat.ico 
AppName=XChat-WDK
AppPublisher=XChat-WDK
AppPublisherURL=http://www.xchat-wdk.org/
AppCopyright=Copyright (C) 1998-2010 Peter Zelezny
AppSupportURL=http://code.google.com/p/xchat-wdk/issues/list
AppUpdatesURL=http://www.xchat-wdk.org/home/downloads
UninstallDisplayIcon={app}\xchat.exe
UninstallDisplayName=XChat-WDK
DefaultDirName={pf}\XChat-WDK
DefaultGroupName=XChat-WDK
DisableProgramGroupPage=yes
DisableDirPage=yes
DisableReadyPage=yes
DisableReadyMemo=yes
SolidCompression=yes
SourceDir=..\tmp
OutputDir=..\win32
FlatComponentsList=no
PrivilegesRequired=none
ShowComponentSizes=no
CreateUninstallRegKey=no
Uninstallable=no
ArchitecturesAllowed=x64
ArchitecturesInstallIn64BitMode=x64

[Messages]
BeveledLabel= XChat-WDK

[Code]
/////////////////////////////////////////////////////////////////////
// these are required for x86->x64 or reverse upgrades
/////////////////////////////////////////////////////////////////////
function GetUninstallString(): String;
var
	sUnInstPath: String;
	sUnInstallString: String;
begin
	sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\XChat-WDK (x64)_is1');
	sUnInstallString := '';
	if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then
		RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString);
	Result := sUnInstallString;
end;


/////////////////////////////////////////////////////////////////////
function IsUpgrade(): Boolean;
begin
	Result := (GetUninstallString() <> '');
end;


/////////////////////////////////////////////////////////////////////
function UnInstallOldVersion(): Integer;
var
	sUnInstallString: String;
	iResultCode: Integer;
begin
// Return Values:
// 1 - uninstall string is empty
// 2 - error executing the UnInstallString
// 3 - successfully executed the UnInstallString

	// default return value
	Result := 0;

	// get the uninstall string of the old app
	sUnInstallString := GetUninstallString();
	if sUnInstallString <> '' then begin
		sUnInstallString := RemoveQuotes(sUnInstallString);
		if Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then
			Result := 3
		else
			Result := 2;
	end else
		Result := 1;
end;

/////////////////////////////////////////////////////////////////////
procedure MigrateSettings();
begin
  RenameFile(ExpandConstant('{userappdata}\X-Chat 2'), ExpandConstant('{userappdata}\HexChat'));
end;

/////////////////////////////////////////////////////////////////////
function SettingsExistCheck(): Boolean;
begin
  if DirExists(ExpandConstant('{userappdata}\X-Chat 2')) then
    Result := True
  else
    Result := False
end;

/////////////////////////////////////////////////////////////////////
procedure CurStepChanged(CurStep: TSetupStep);
var
	ErrCode: integer;
begin
	if not (IsTaskSelected('portable')) then
	begin

		if (CurStep=ssInstall) then
		begin
			if (IsUpgrade()) then
			begin
				UnInstallOldVersion();
			end;
		end;

		if (CurStep=ssPostInstall) then
		begin
			if SettingsExistCheck() then begin
				if SuppressibleMsgBox('Would you like to migrate your existing XChat configuration to HexChat?', mbConfirmation, MB_YESNO or MB_DEFBUTTON2, IDNO) = IDYES then
					MigrateSettings();
			end;
		end;

		if (CurStep=ssDone) then
		begin
			ShellExec('open', 'http://www.hexchat.org/home/downloads', '', '', SW_SHOW, ewNoWait, ErrCode);
		end;

	end;
end;