1

We have an MSI developed using Wix 3.10, it contains around 33,200 components associated with one particular feature.

The issue is that when the MSI is launched, the welcome dialog takes a long time to be enabled, roughly around 3-4 minutes on the development environment. The same issue occurs when the particular feature is deselected and selected back for usage.

I suspect the delay seems to be due to standard Custom action such as CostInitialise, FileCost, and CostFinalise.

This behavior hampers the UI experience. Is there a workaround to fix this issue.

Santhosh
  • 671
  • 12
  • 36
  • Maybe try to set the property [**MSIFASTINSTALL**](https://learn.microsoft.com/nb-no/windows/desktop/Msi/msifastinstall) to 3 in the property table. This is to limit costing and avoid creating a system restore point. – Stein Åsmul Sep 26 '18 at 21:35
  • Going to add a comment in chat on using external cab files. Won't really help I think, but I will just briefly describe it. – Stein Åsmul Oct 02 '18 at 01:37

1 Answers1

0

Paraffin: The tool Paraffin in an earlier edition can be used to generate components with multiple files. Not recommended, but possible: Generate WIX authoring files to contain multiple files under a single component.


MSIFASTINSTALL: Maybe try to set the property MSIFASTINSTALL to 3 in the property table. This is to limit costing and avoid creating a system restore point. This can speed things up quite a bit. Hopefully.

Max Package Size: There are a number of size limtations for an MSI file. I am not sure if you have enabled the schema changes required for large MSI packages? See this topic on installsite.org: What are the limits for a large MSI package?

Microsoft Doc: Authoring a Large Package (the schema changes you might need).


Consolidation: Going to incorporate some of the suggestions from the comments here:

  • Log File: Get a proper log file created just to have more debugging material: msiexec.exe /i C:\Path\Your.msi MSIFASTINSTALL=3 /L*v C:\Your.log - more on logging from installsite.org
  • Admin Install: Try running the installation after performing an admin install. This will avoid CAB-extraction which can be lengthy: msiexec.exe /a MySetup.msi TARGETDIR=C:\MySetup (also see security software interference below).
  • Dialog Set: Just to rule it out, if you use WiX try to compile your setup with a different setup GUI.
  • Security Software: Definitely try to disable your security software during a test install to see if the anti-virus or anti-malware software kills the CAB extract or blocks a custom action or slows things down overall more than usual.
  • Custom Actions: Review any custom actions and perhaps disable them for a test run. Just to narrow down. Not the most likely candidate, but I have seen it happen - typically in combination with security software interference.
  • Regroup & Decompose: And the bite-the-bullet option that we often end up with: split the setup in different parts to get a faster installation per-setup. You can use WiX's Burn bootstrapper / sequencer / downloader / chainer to install several MSI files in sequence.
  • Run Locally: Just for the record, if you run off a network share, copy the setup local and try again.

The WiX Burn option also allows you to write your own, external setup GUI. I am not sure how that would help with the installation speed. You would not show your setup's own, slow dialogs, but costing would still run. In would just happen whilst the setup is being run in silent mode (most likely).


Some Links:

Stein Åsmul
  • 39,960
  • 25
  • 91
  • 164
  • Setting MSIFASTINSTALL property to 3 does not solve the issue. Any other alternatives to resolve the issue. – Santhosh Sep 28 '18 at 16:17
  • Did you see no effect at all? To be sure, try to set it at the command line as well: `msiexec.exe /i MySetup.msi MSIFASTINSTALL=3`. I guess the only other option I can think of would be to reduce the number of components by installing several files per component. Let me think if there are other options... – Stein Åsmul Sep 28 '18 at 16:34
  • Please try to [**make a log file for your setup**](http://www.installsite.org/pages/en/msifaq/a/1022.htm) - if you don't already have one: `msiexec.exe /i C:\Path\Your.msi MSIFASTINSTALL=3 /L*v C:\Your.log` – Stein Åsmul Sep 28 '18 at 16:37
  • Thanks for the suggestion, did try with command line install. MSIFASTINSTALL=3 seems to have no effect. – Santhosh Sep 28 '18 at 17:06
  • Did you try to compile with a different dialog set? These will be far-fetched suggestions... How big is the setup? In megabytes and number of files? What types of files are they? Are the files you install already present on disk in the target location? – Stein Åsmul Sep 28 '18 at 17:18
  • If you do an **admin install** of your setup first (`msiexec.exe /a MySetup.msi TARGETDIR=C:\MySetup`), and run from the admin image, is performance then significantly better? Did you try whilst **disabling your security suite**? (anti-virus etc...). What **custom actions** exist in your setup? – Stein Åsmul Sep 28 '18 at 17:24
  • The obvious solution might be to **split your MSI into several different ones** and use the Burn WiX bootstrapper / sequencer / downloader / chainer to install in sequence. – Stein Åsmul Sep 28 '18 at 17:28
  • The setup size is 628 MB, with 32,233 files in 17 folders. These files are not present on the disk in the target location. – Santhosh Oct 01 '18 at 07:38
  • In case of running the installer from admin image, the performance improved by taking 20% lesst time, when considered to normal install. – Santhosh Oct 01 '18 at 07:42
  • Can we skip the FIleCost CA? – Santhosh Oct 01 '18 at 07:42
  • Will have a look later. The standard actions for costing (there are no CAs - as in custom actions, but rather standard actions) can only be reduced in scope by the MSIFASTINSTALL property - as far as I know. – Stein Åsmul Oct 01 '18 at 10:58
  • Can I ask how many features you have? And if there are many, do files typically belong to several features? Are there many sub-features? I ask and I wonder to myself: why would that matter? And the answer is that I don't generally think it does matter, but I want to get a picture of what this setup really looks like. As in is there one or are there 200 features? Let's try to clarify that. I am not sure what other things could help. I'll have a think. – Stein Åsmul Oct 01 '18 at 17:51
  • Do you already have multiple files per component? I like one file per component, but for performance reasons that is bad - of course. To be honest I would rather split the package than to rely heavily on many files per component, but there is no general agreement on that. – Stein Åsmul Oct 02 '18 at 01:24
  • Let us [continue this discussion in chat](https://chat.stackoverflow.com/rooms/181121/discussion-between-stein-asmul-and-santhosh). – Stein Åsmul Oct 02 '18 at 01:35