History log of /haiku/src/apps/installer/WorkerThread.h
Revision Date Author Comments
# dfb36b35 08-Aug-2020 Niels Sascha Reedijk <niels.reedijk@gmail.com>

Installer: fix 'clean install' over existing installation.

Whenever the target of an installation is a partition that is not empty, the
Installer prompts the user whether they would like to continue with a 'clean
installation', i.e. an installation that clears out the system folder,
excluding the settings, and cleanly installs the assets in the source's
system folder. At all other locations the source data is merged, meaning that
the source version is copied in place.

The logic that clears out the existing /system/ directory stopped working. This
change moves that logic from the copying process, to where it is run before any
file is copied. The added advantage is that the system folder is now properly
cleaned up, also stray files under the system folder will be removed.

This change does not change the logic of what constitutes a 'clean install'.
There are arguments to be made that it should potentially also drop the
settings files, as well as clean out the user's home folder for stray
add-ons, but that really is different functionality, and at this points I
think the requirements for that are not yet fleshed out.

The change was manually tested.

Fixes #16092

Change-Id: Ia6781c8d2330ba336b3921f9a980b5e31c48a2ec
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3140
Reviewed-by: Andrew Lindesay <apl@lindesay.co.nz>


# 2c09e0dc 04-Aug-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

Installer: separate writing bootsector from other install finishing code

Remove the InstallerInitScript (it does nothing) and the
InstallerFinishScript (it does too many things). Instead implement the
finishing directly in Installer. Separate writing the bootsector, so
that the "write bootsector" menu writes only the bootsector.

Fixes #16303


# a99aa113 15-Dec-2018 Augustin Cavalier <waddlesplash@gmail.com>

Installer: Check return value of system() calls.

Solves a TODO.


# 348d9eac 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: WorkerThread: Remove InstallerWindow dependency

* Move message constants to InstallerDefs.h.
* Determine the source and target partition ID already in
InstallerWindow and pass those to WorkerThread instead of fiddling
with menu items in _PerformInstall(). And instead of the window object
pass a messenger to the constructor.


# e8eb6ae2 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: WorkerThread::_PerformInstall(): get rid of goto


# c2be967e 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: CopyEngine: Externalize decision making

* Add interface EntryFilter, an instance of which can be passed to the
CopyEngine. The object is asked whether to copy entries/clobber
directories.
* Move the _ShouldCopyEntry()/_ShouldClobberFolder() code to new
WorkerThread::EntryFilter.


# 45739d5d 06-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

* Added creation of default indices, as are currently present on regular Haiku
volumes. I've decided not to put this into InstallerInitScript, as I reckon
the script is to customize the installation process more than to be a critical
part of the process.
* Make mirroring the existing indices onto the target volume ignore more errors.
This should be the final fix for ticket #7320.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40836 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a2dc49b5 05-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

* Mirror all the indices from the source volume to the target volume.
Note that it would have been an option to invoke mkindex, which has
a similar mirroring option, in the InstallerInitScript, but I favor
making Installer depend on as few external tools as possible.
* Very small cleanup in _PerformInstall(). It should be broken up more
into individual methods.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40816 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 72586154 06-Sep-2009 Stephan Aßmus <superstippi@gmx.de>

* Finished ProgressReporter
* Integrated ProgressReporter into CopyEngine and UnzipEngine.
* Integrated unzipping to main installer engine. Since there are currently no
.zip files in the _packages_ folder (and not even a _packages_ folder
itself), this is completely invisible, but it works.

TODO: Adjust the build system to optionally copy packages into _packages_
instead of extracting them. Like for the CD build profile mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32967 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d7737cc8 29-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Changed the somewhat bold BLocker usage to a more straight forward semaphore
based mechanism to pause and eventually cancel the WorkerThread. This also works
now when the CopyEngine is still collecting file informartion (ticket #4153).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31912 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b4afa663 03-May-2009 Stephan Aßmus <superstippi@gmx.de>

First round of cleanup:
* Renamed CopyEngine to WorkerThread, since it's used for other things than
just copying.
* Removed the code borrowed from Tracker.
* Removed the InstallerCopyLoopControl, since the CopyEngine handles
notifications and cancelling by itself now.
* Renamed a few message constants.
* Since we only support BFS partitions as install targets, I removed the
FS type from the target menu item label. However, I am going to solve this
differently. I guess all partitions should be seen in the target list, just
disabled if they are not a valid target, and with a reason given too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30600 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 348d9eac3b8a59123dcfa04848a42e304a15929d 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: WorkerThread: Remove InstallerWindow dependency

* Move message constants to InstallerDefs.h.
* Determine the source and target partition ID already in
InstallerWindow and pass those to WorkerThread instead of fiddling
with menu items in _PerformInstall(). And instead of the window object
pass a messenger to the constructor.


# e8eb6ae212738836c9a16c463c8aed3cdf23f72e 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: WorkerThread::_PerformInstall(): get rid of goto


# c2be967eb9044dd6a57f8ce0f0fde28c3e2e8ab9 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: CopyEngine: Externalize decision making

* Add interface EntryFilter, an instance of which can be passed to the
CopyEngine. The object is asked whether to copy entries/clobber
directories.
* Move the _ShouldCopyEntry()/_ShouldClobberFolder() code to new
WorkerThread::EntryFilter.


# 45739d5d4b29e50af2809c94206ecd9390d62b38 06-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

* Added creation of default indices, as are currently present on regular Haiku
volumes. I've decided not to put this into InstallerInitScript, as I reckon
the script is to customize the installation process more than to be a critical
part of the process.
* Make mirroring the existing indices onto the target volume ignore more errors.
This should be the final fix for ticket #7320.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40836 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a2dc49b516ca41adb01499d2ca76552524fe1a81 05-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

* Mirror all the indices from the source volume to the target volume.
Note that it would have been an option to invoke mkindex, which has
a similar mirroring option, in the InstallerInitScript, but I favor
making Installer depend on as few external tools as possible.
* Very small cleanup in _PerformInstall(). It should be broken up more
into individual methods.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40816 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 72586154d7f505bd5f15377db729b515d40dee40 06-Sep-2009 Stephan Aßmus <superstippi@gmx.de>

* Finished ProgressReporter
* Integrated ProgressReporter into CopyEngine and UnzipEngine.
* Integrated unzipping to main installer engine. Since there are currently no
.zip files in the _packages_ folder (and not even a _packages_ folder
itself), this is completely invisible, but it works.

TODO: Adjust the build system to optionally copy packages into _packages_
instead of extracting them. Like for the CD build profile mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32967 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d7737cc84f8e442fac5d246b1d4ec063312ea259 29-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Changed the somewhat bold BLocker usage to a more straight forward semaphore
based mechanism to pause and eventually cancel the WorkerThread. This also works
now when the CopyEngine is still collecting file informartion (ticket #4153).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31912 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b4afa66367d65eb54c52b4aeec4724af691ef11b 03-May-2009 Stephan Aßmus <superstippi@gmx.de>

First round of cleanup:
* Renamed CopyEngine to WorkerThread, since it's used for other things than
just copying.
* Removed the code borrowed from Tracker.
* Removed the InstallerCopyLoopControl, since the CopyEngine handles
notifications and cancelling by itself now.
* Renamed a few message constants.
* Since we only support BFS partitions as install targets, I removed the
FS type from the target menu item label. However, I am going to solve this
differently. I guess all partitions should be seen in the target list, just
disabled if they are not a valid target, and with a reason given too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30600 a95241bf-73f2-0310-859d-f6bbb57e9c96