Index: scripts/setup.iss
===================================================================
diff -u -N -ra27d1acf1bda3c25b6dcce0d0eb0278009ce63ae -r694e362bf3ce049a7bbba8b4cf442d07e6741901
--- scripts/setup.iss	(.../setup.iss)	(revision a27d1acf1bda3c25b6dcce0d0eb0278009ce63ae)
+++ scripts/setup.iss	(.../setup.iss)	(revision 694e362bf3ce049a7bbba8b4cf442d07e6741901)
@@ -123,10 +123,9 @@
 Filename: "{app}\{code:ExpandArch|ExeFilename}"; Flags: nowait postinstall skipifsilent; Description: "{cm:LaunchProgram,{#MyAppName}}"
 
 [Registry]
+Root: "HKLM"; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: none; ValueName: "Copy Handler"; Flags: deletevalue uninsdeletevalue
+Root: "HKCU"; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: none; ValueName: "Copy Handler"; Flags: uninsdeletevalue
 
-Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: Copy Handler; Flags: dontcreatekey deletevalue
-Root: HKCU; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: Copy Handler; Tasks: startatboot; ValueData: {app}\{code:ExpandArch|ExeFilename}; Flags: uninsdeletevalue
-
 [Dirs]
 Name: {app}\help; Flags: uninsalwaysuninstall
 Name: {app}\langs; Flags: uninsalwaysuninstall
@@ -160,3 +159,16 @@
 		end;
 	end;
 end;
+
+procedure CurStepChanged(CurStep: TSetupStep);
+var
+  ResultCode: Integer;
+begin
+    if CurStep = ssPostInstall then
+    begin
+        if IsTaskSelected('startatboot') then
+            ExecAsOriginalUser(ExpandConstant('{app}\{code:ExpandArch|ExeFilename}'), '--EnableLaunchAtStartup=1', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
+        else
+            ExecAsOriginalUser(ExpandConstant('{app}\{code:ExpandArch|ExeFilename}'), '--EnableLaunchAtStartup=0', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
+    end;
+end;