# HG changeset patch
# User Rock Hymas <r...@fogcreek.com>
# Date 1253044345 14400
# Branch stable
# Node ID 69a4647178107528dad3cdb8e18c7dccfe7f8840
# Parent  b55454ab7e07b3084f58c23d9da719eefbe9e730
installer: Create a mercurial.ini file in users HOME directory with username set

Ask for username during install if there is no mercurial.ini

diff --git a/contrib/win32/mercurial.iss b/contrib/win32/mercurial.iss
--- a/contrib/win32/mercurial.iss
+++ b/contrib/win32/mercurial.iss
@@ -62,6 +62,7 @@
 Source: ..\build-hg\doc\*.html; DestDir: {app}\docs; Flags: ; Components: help
 Source: {app}\Mercurial.ini; DestDir: {app}\backup; Flags: external 
skipifsourcedoesntexist uninsneveruninstall
 Source: contrib\win32\mercurial.ini; DestDir: {app}; DestName: Mercurial.ini; 
AfterInstall: FileExpandString('{app}\Mercurial.ini')
+Source: contrib\win32\mercurialuser.ini; DestDir: {%USERPROFILE}; DestName: 
Mercurial.ini; AfterInstall: 
FileExpandStringEx('{%USERPROFILE}\Mercurial.ini'); Flags: onlyifdoesntexist 
 Source: ReleaseNotes.txt; DestDir: {app}; DestName: ReleaseNotes.txt
 Source: ..\contrib\*.exe; DestDir: {app}; Flags: 
 Source: ..\contrib\*.dll; DestDir: {app}; Flags: 
@@ -172,16 +173,60 @@
     SP1Missing := True;
 end;
 
-function ShouldSkipPage(PageID: Integer): Boolean; 
-begin 
-  { Skip wpSelectDir page if upgrading; show all others } 
-  case PageID of 
-    wpSelectDir: 
-      Result := IsUpgrade; 
-  else 
-      Result := False; 
-  end; 
-end; 
+var UserInfoPage: TInputQueryWizardPage;
+var GetUserName: Boolean;
+
+procedure InitializeWizard(); 
+begin
+  if (not(FileExists(ExpandConstant('{%USERPROFILE}\Mercurial.ini')))) then
+  begin
+    // Create the page
+    UserInfoPage := CreateInputQueryPage(wpUserInfo,
+      'Personal Information', 'Who are you?',
+      'Please specify your name and email address, then click Next.');
+
+    // Add items (False means it's not a password edit)
+    UserInfoPage.Add('Full Name:', False);
+    UserInfoPage.Add('Email address:', False);
+
+    // Set initial values (optional)
+    UserInfoPage.Values[0] := ExpandConstant('{username}');
+    GetUserName := True;
+  end
+  else
+    GetUserName := False;
+end;
+
+procedure FileExpandStringEx(fn: String);
+var
+  InFile: String;
+  i: Integer;
+  InFileLines: TArrayOfString;
+begin
+  if (GetUserName) then
+  begin
+    InFile := ExpandConstant(fn);
+    LoadStringsFromFile(InFile, InFileLines);
+    for i:= 0 to GetArrayLength(InFileLines)-1 do
+    begin
+      InFileLines[i] := ExpandConstantEx(InFileLines[i], 
+        'hgusername', 
+         UserInfoPage.Values[0] + ' <' + UserInfoPage.Values[1] + '>');
+    end;
+    SaveStringsToFile(InFile, InFileLines, False);
+  end;
+end;
+
+function ShouldSkipPage(PageID: Integer): Boolean;
+begin
+  { Skip wpSelectDir page if upgrading; show all others }
+  case PageID of
+    wpSelectDir:
+      Result := IsUpgrade;
+  else
+      Result := False;
+  end;
+end;
 
 function TerminateThgTaskbar(): Boolean;
 var
diff --git a/contrib/win32/mercurialuser.ini b/contrib/win32/mercurialuser.ini
new file mode 100644
--- /dev/null
+++ b/contrib/win32/mercurialuser.ini
@@ -0,0 +1,5 @@
+; User specific Mercurial config file.
+; See the hgrc man page for details.
+
+[ui]
+username = {hgusername}

------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
_______________________________________________
Tortoisehg-develop mailing list
Tortoisehg-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop

Reply via email to