Index: installer/CopyEngine.cpp
===================================================================
--- installer/CopyEngine.cpp	(Revision 25502)
+++ installer/CopyEngine.cpp	(Arbeitskopie)
@@ -74,8 +74,9 @@
 		{
 			status_t err = Start(fWindow->GetSourceMenu(),
 				fWindow->GetTargetMenu());
-			if (err != B_OK) {
+			if (err != B_OK || fControl->CheckUserCanceled()) {
 				ERR("Start failed");
+				SetStatusMessage("Installation aborted." );
 				BMessenger(fWindow).SendMessage(RESET_INSTALL);
 			}
 			break;
@@ -283,6 +284,7 @@
 			BPath path;
 			entry.GetPath(&path);
 			ERR2("error while copying %s", path.Path());
+			fControl->Cancel(false);
 		}
 	}
 }
Index: installer/InstallerCopyLoopControl.cpp
===================================================================
--- installer/InstallerCopyLoopControl.cpp	(Revision 25502)
+++ installer/InstallerCopyLoopControl.cpp	(Arbeitskopie)
@@ -100,12 +100,12 @@
 
 
 bool
-InstallerCopyLoopControl::Cancel()
+InstallerCopyLoopControl::Cancel(bool alert)
 {
-	fUserCanceled = (new BAlert("", 
+	fUserCanceled = alert ? (new BAlert("", 
 			"Are you sure you want to to stop the installation?", 
 			"Continue", "Stop", 0,
-			B_WIDTH_AS_USUAL, B_STOP_ALERT))->Go() != 0;
+			B_WIDTH_AS_USUAL, B_STOP_ALERT))->Go() != 0 : true;
 	return fUserCanceled;
 }
 
Index: installer/InstallerWindow.cpp
===================================================================
--- installer/InstallerWindow.cpp	(Revision 25502)
+++ installer/InstallerWindow.cpp	(Arbeitskopie)
@@ -217,6 +217,7 @@
 					}
 					break;
 				case kFinished:
+					SetStatusMessage("Installation completed.");
 					PostMessage(B_QUIT_REQUESTED);
 					break;
 				case kCancelled:
Index: installer/InstallerCopyLoopControl.h
===================================================================
--- installer/InstallerCopyLoopControl.h	(Revision 25502)
+++ installer/InstallerCopyLoopControl.h	(Arbeitskopie)
@@ -35,7 +35,7 @@
 		virtual bool ChecksumFile(const entry_ref *);
 		virtual bool SkipAttribute(const char *attributeName);
 		virtual bool PreserveAttribute(const char *attributeName);
-		bool Cancel();
+		bool Cancel(bool alert = true);
 		void Reset();
 
 	private:
Index: installer/FSUtils.cpp
===================================================================
--- installer/FSUtils.cpp	(Revision 25502)
+++ installer/FSUtils.cpp	(Arbeitskopie)
@@ -831,7 +831,7 @@
 	if (gStatusWindow)
 		gStatusWindow->RemoveStatusItem(thread);
 
-	return B_OK;
+	return result;
 }
 
 class FailWithAlert {
