I have figured how to solve my problem #1. My guess about the cause is that the updater runs on a sepparate thread and either MainWindow constructor does not finish fast enough (I am not doing anything complicated though) or setting the Arguments property does not propagate fast enough and data are already sent to the Updater background worker.
So to make sure I set the arguments, I registered the BeforeInstalling event, and set the Arguments property there. That way it is guaranteed to be set.
Daniel