View Single Post
Old 06-28-2010, 02:28 PM   #3
toddos
Guru
toddos ought to be getting tired of karma fortunes by now.toddos ought to be getting tired of karma fortunes by now.toddos ought to be getting tired of karma fortunes by now.toddos ought to be getting tired of karma fortunes by now.toddos ought to be getting tired of karma fortunes by now.toddos ought to be getting tired of karma fortunes by now.toddos ought to be getting tired of karma fortunes by now.toddos ought to be getting tired of karma fortunes by now.toddos ought to be getting tired of karma fortunes by now.toddos ought to be getting tired of karma fortunes by now.toddos ought to be getting tired of karma fortunes by now.
 
toddos's Avatar
 
Posts: 695
Karma: 822675
Join Date: May 2010
Device: Kobo Aura, Nokia Lumia 920 (Freda)
Quote:
Originally Posted by kovidgoyal View Post
I certainly don't ask it to check for disk space, that was Microsoft's bright idea and their implementation of it is absolutely ridiculous. Unfortunately, I am stuck using Microsoft software to build the installer because of another crazy decision they made regarding the distribution of visual studio runtimes.

Personally, working on the windows installer gives me a migraine, so I'm not going to touch it anymore. Still if anyone wants to help the code is in

setup/installer/windows/*

(calibre uses WiX to generate the .msi file)
MSIs do the file costing for a reason -- by spending some time up front calculating file diffs, the MSI can avoid unpacking/installing files it doesn't need to change. Unfortunately for Calibre, this works poorly when there are a ton of files in the installer (I'm seeing > 4000 files, which is a lot) and that slows down costing. I don't know which will be more efficient -- spending the time to do file costing, or just copying every file whether it's needed or not. I suspect the latter is done anyway during a calibre installation, so FileCost could most likely be disabled.

In wix-template.xml, add a section at the end (before </Product>) like:

Code:
<InstallExecuteSequence>
    <FileCost Suppress="yes" />
</InstallExecuteSequence>
You might have to do the same for <InstallUISequence />, <AdminExecuteSequence />, and <AdminUISequence />, but I'm not sure. I'd hope <InstallExecuteSequence /> would take care of it. Also note that this is completely untested but should get people moving in the right direction if someone is interested enough to make this change.
toddos is offline   Reply With Quote