user7545513
user7545513

Reputation:

Wix Installer hangs on Calculating Space Requirements

I have an installer that install some files etc. We use Parrafin to create .wxs files that we include in the installer.

When I include a certain .wxs file, the installer hangs on Calculating Space Requirements, if I remove this file from the installer, all works fine?

I have tried reading the logs but it just shows CostFinalize and stops there?

85284 Files and Components

10333 Directories

37 Features

85284 FeatureComponents

Directories Image

.wxs File Sizes Portal is at the top.

Edit: Tried to install on a VM and it wouldn't take there either. This only happens when I add (a large) component to the installer. I tried validating it with Orca, but it takes waaaay to long. The burn tool only gave me the font warnings.

Edit 2: When I disable multiple features and add the Portal feature the installer seems to work. Can this be that I have to many features? Or a feature that is too big?

Edit 3 After working on it, it now happens even with the Portal dissabled. I have no idea what the error is.

Edit 4 After searching some more I find this site that gives the max amount per component and files. And I am over that number. Microsoft has some info on it, so I will be trying that!

<DirectoryRef Id="INSTALLDIR">
      <Directory Id="dir_F7990BC992434CA08269373C780FC09E" Name="Portal">
        <Component Id="comp_AD6C481EA13D4A09886B6ABFE39FEB90" Guid="*">
          <File Id="file_8C1F31FBCB1C442191C18E1C28DFE1D4" KeyPath="yes" Source="..\..\..\Portal\create_user_table.txt" />
        </Component>
        <Component Id="comp_667C7BA41A8C47B99216E1FCE9694FAD" Guid="SOME_GUID">
          <File Id="file_5C0A67A5C1D045699C4605086A8985E0" KeyPath="yes" Source="..\..\..\Portal\package.json" />
        </Component>
        <Component Id="comp_6A5E08DD4BA041B79C2A803BF77AA911" Guid="SOME_GUID">
          <File Id="file_7D9CAEFDA0274FD5962E008ED96D0DE0" KeyPath="yes" Source="..\..\..\Portal\README.md" />
        </Component>
        <Component Id="comp_47673BC5120B4E36B16C2F1C2A5B312C" Guid="SOME_GUID">
          <File Id="file_F379EA1FAC914D04AE71C5F2935C01A6" KeyPath="yes" Source="..\..\..\Portal\server.js" />
        </Component>
        <Component Id="comp_186CD36E3F8D4E5C87883DEED6318719" Guid="SOME_GUID">
          <File Id="file_490119871C7F40DDBA45887213D854D8" KeyPath="yes" Source="..\..\..\Portal\server.log" />
        </Component>
        <Component Id="comp_3DF5DC2F788943BA9C8306FA59732A11" Guid="SOME_GUID">
          <File Id="file_96A709AF75D94034AD4B0E96B3BCE11A" KeyPath="yes" Source="..\..\..\Portal\service-install.js" />
        </Component>
        <Component Id="comp_DE5B71D9473F4FC489779922FE0D5952" Guid="SOME_GUID">
          <File Id="file_9586EC6A7C434412A9B7E9B5FE81346C" KeyPath="yes" Source="..\..\..\MWSS-Portal\service-stop.js" />
        </Component>
        <Component Id="comp_FFE35627FB7E45D298BB83207930EC8C" Guid="SOME_GUID">
          <File Id="file_B2776FD43A2D4F61B885018A011DACDC" KeyPath="yes" Source="..\..\..\Portal\service-uninstall.js" />
        </Component>
        <Directory Id="dir_F418E5D92B1A4D75981522C329550318" Name="app">
          <Directory Id="dir_7F390C9C4EBA4BDBBA54E4099DD462A2" Name="controllers">
            <Component Id="comp_EC62E12FA41E43FC96854CB9247CD409" Guid="SOME_GUID">
              <File Id="file_D6FF1EAEEB4E4612B2E140E94B07C9AA" KeyPath="yes" Source="..\..\..\MWSS-Portal\app\controllers\configurationController.js" />
            </Component>

<ComponentGroup Id="MWSS_Portal">
      <ComponentRef Id="comp_AD6C481EA13D4A09886B6ABFE39FEB90" />
      <ComponentRef Id="comp_667C7BA41A8C47B99216E1FCE9694FAD" />
      <ComponentRef Id="comp_6A5E08DD4BA041B79C2A803BF77AA911" />
      <ComponentRef Id="comp_47673BC5120B4E36B16C2F1C2A5B312C" />

Last part of the log:

Action ended 16:32:47: FileCost. Return value 1.
MSI (c) (3C:DC) [16:32:47:481]: Doing action: CostFinalize
Action 16:32:47: CostFinalize. Computing space requirements
Action start 16:32:47: CostFinalize.
MSI (c) (3C:DC) [16:32:47:488]: PROPERTY CHANGE: Adding OutOfDiskSpace property. Its value is '0'.
MSI (c) (3C:DC) [16:32:47:494]: PROPERTY CHANGE: Adding OutOfNoRbDiskSpace property. Its value is '0'.
MSI (c) (3C:DC) [16:32:47:500]: PROPERTY CHANGE: Adding PrimaryVolumeSpaceAvailable property. Its value is '0'.
MSI (c) (3C:DC) [16:32:47:512]: PROPERTY CHANGE: Adding PrimaryVolumeSpaceRequired property. Its value is '0'.
MSI (c) (3C:DC) [16:32:47:513]: PROPERTY CHANGE: Adding PrimaryVolumeSpaceRemaining property. Its value is '0'.
MSI (c) (3C:DC) [16:32:47:546]: Note: 1: 2205 2:  3: Patch 

Upvotes: 2

Views: 1593

Answers (2)

user7545513
user7545513

Reputation:

It took me a while but I think I have it figured out.

The max amount of components is 65536, I have 95904. Even after setting the tables data types to longs it still fails. So either I have to have multiple files per component, or split it in different installers.

After updating the Paraffin source code to have every directory (instead of a file) per component. It installs. I now have 10623 components.

Upvotes: 1

Stein &#197;smul
Stein &#197;smul

Reputation: 42126

UPDATE: I forgot Occam's razor for this one - I will still leave the debugging suggestions below - maybe someone can find something relevant there at some point.

In summary, though: the package in question was just too big hitting the size limitations for MSI files as described in the three links below. It should be our first suspicion for problems like these (when the same "lockup problem" is seen on multiple machines):

Rather than dealing with such big packages, please consider splitting your setup into several MSI files and install them via a bootstrapper or sequencer such as Burn. See these links:


I'll just add this as an answer rather than spam with comments. I will update and evolve this once we get more information.

I assume you are not on Win9x? Did you try validate? If so, did you get any errors / warnings? With regards to logging, maybe try "flush to log":

msiexec.exe /package "C:\Setup.msi" /L*V! "C:\msilog.log".

The key is the ! character, it forces the log to be written continuously instead of in batches. Just a long-shot to see if you can get some sort of error message recorded.

The test on the VM basically strongly indicates that you have a genuine error in your MSI file - in some form. Really do try that validation - it might not tell you anything, but if it indicates anything at all, then you get something to start with.

Also: your MSI should generally not contain any sensitive information such as: login credentials, passwords, database connection strings, user names, share name, IP-addresse, machine names, or other sensitive data. All of this should be set either in a transform or by means of PUBLIC PROPERTIES when the MSI is being installed - or entered into the setup GUI as the setup is being executed on the target systems. There is some information here on using transforms and PUBLIC PROPERTIES: How to make better use of MSI files.


UPDATE: How large is this MSI? In megabytes, number of components, number of files, etc... Can you try to run an admin install on it and install and / or validate the extracted MSI? Another long-shot.

UPDATE: I suppose there could be something wrong with your build computer. Maybe run through this check list of possible problems. I would first try 1) running the MSI directly from the local disk (no network drive), 2) disable anti virus or security software, 3) are you running as admin? Do you get a UAC prompt? Less common these days, but you could also have a 32bit/64bit issue.

UPDATE: I don't want to take you off course, but I want to draw your attention to the fact that a lot of your source content is actually necessary - all the long Id attributes etc... I know you are auto-generating, and I have never used Paraffin, but you could try to remove all these unnecessary attributes and see if the resulting MSI behaves better: Syntax for guids in WIX?. Try this if all else fails - I am just adding it for completeness. I don't really think this is the real culprit, but it is not impossible either.

UPDATE: To interpret an MSI log file, check this article from Robert Macdonald from the Windows Installer Team is highly recommended as a practical look at MSI logging: How to Interpret Windows Installer Logs. And a quick link for safekeeping and future reference.

UPDATE: As you explain, it seems you get stuck during "costing" (space check). There is a property that can be set to simplify costing, it is called MSIFASTINSTALL. Its use to speed up installation is described here: How can I speed up MSI package install and uninstall?. Perhaps try to set it to 3 as explained in the linked answer (see command line to use in answer).

UPDATE: I really think this must be a decompiled Installshield MSI that has been updated with Paraffin - or something like that - as such there could be some weird incompatibilities that surface between Installshield's way to do things and WiX. Very hard to debug :-(. You will hate it, but I would suggest you try to quickly create a similar test MSI by using WiX's own heat.exe to generate a new WiX source file with all the files. Then you compile a new MSI from the new source and run only on a test system to see if it is working as expected (fast). Also, do you have access to Installshield? If so, open your existing MSI, go to the components view and select the first component. In the property list to the right, click the ... or similar in the "Destination" field to open up the list of destination folders. Does the directory list resolve? (does it look as expected).

Upvotes: 0

Related Questions