cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Barvaz
Level 6

out of disk space on

Hi,

I am creating an install using a Basic MSI 2012 project and I want to provide the user the option to install onto a different drive if the default install directory is OUT OF DISK SPACE.
I provide him the custom UI to install onto a different drive (e.g. E:\) - I can see in the log file that INSTALLDIR property was changed:

MSI © (58:48) [16:41:11:512]: PROPERTY CHANGE: Modifying INSTALLDIR property. Its current value is 'C:\'. Its new value: 'E:\'.


Drive E: have sufficient disk space!!
But the user back to OUT OF DISK SPACE dialog - properties OutOfDiskSpace and OutOfNoRbDisk space weren't checks/run again – After the user changed the target path to other drive (Not Default drive).
How can I rerun/recheck disk space on new drive (e.g. Drive E:\) and not on the default dirve (e.g. drive C:\) disk space ?
Please suggest.

Thanks,
Labels (1)
0 Kudos
(5) Replies
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

Is INSTALLDIR being set as a property (either with a SetProperty action, or calling MsiSetProperty or an equivalent through a custom action)? If so, this does not cause MSI to perform any checks on the target path or update any child paths of INSTALLDIR. A Set Directory (type 35) action, SetTargetPath dialog action, or MsiSetTargetPath call should be used instead (note this should only be done with a condition of Not Installed to prevent interfering with MSI component information after a first-time install).
0 Kudos
Barvaz
Level 6

The INSTALLDIR has being set as a property and I set it with MsiSetTargetPath – See log file:

MSI (c) (14!B8) [19:22:04:745]: PROPERTY CHANGE: Modifying USR property. Its current value is 'C:\TEST\usr\'. Its new value: 'E:\TEST\usr\'.
MSI (c) (14!B8) [19:22:04:745]: PROPERTY CHANGE: Modifying DATA property. Its current value is 'C:\TEST\data\'. Its new value: 'E:\TEST\data\'.
MSI (c) (14!B8) [19:22:04:745]: PROPERTY CHANGE: Modifying BIN property. Its current value is 'C:\TEST\bin\'. Its new value: 'E:\TEST\bin\'.
MSI (c) (14!B8) [19:22:04:745]: PROPERTY CHANGE: Modifying DAT property. Its current value is 'C:\TEST\dat\'. Its new value: 'E:\TEST\dat\'.
MSI (c) (14!B8) [19:22:04:760]: PROPERTY CHANGE: Modifying COLOR_ICONS property. Its current value is 'C:\TEST\dat\color_icons\'. Its new value: 'E:\TEST\dat\color_icons\'.
MSI (c) (14!B8) [19:22:04:760]: PROPERTY CHANGE: Modifying OLP property. Its current value is 'C:\TEST\dat\olp\'. Its new value: 'E:\TEST\dat\olp\'.


But when I click on 'Install' button After the user changed the target path to other drive (Not Default drive) the 'OUT OF DISK SPACE' dialog pop up again.
How can I cause the system to recheck the disk space on the new drive and not on the default drive - When I click on Install button cause the setup to check the disk space on the new drive?
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

The MSI documentation indicates that the OutOfDiskSpace and OutOfNoRbDiskSpace properties are valid after CostFinalize has run and the OutOfNoRbDiskSpace property (apparently not OutOfDiskSpace though) is dynamically updated with any operation that causes costing to run again (i.e. changing feature selection). The default dialog that would be displayed after clicking OK on the OutOfSpace dialog is the CustomSetup dialog which would allow for changing feature selections and destination paths, allowing for costing to run again.

If these property values are not changing, either costing is not running when target paths are changed, or:
1. There are components installing to paths still on the C: drive (the components are not installing to INSTALLDIR) and the drive does not have sufficient space for these components (for example, merge module components may be installing to locations still on C:).
2. If all components are installing to INSTALLDIR, the C: drive (if it contains the system root Windows folder) still does not contain sufficient free space for the cached MSI package (copied to C:\Windows\Installer by MSI during product registration) and any rollback files generated by Windows Installer.

If (1) is true above, component destinations could be changed in the project to install to INSTALLDIR or some subdirectory. However, (2) cannot be avoided as this is default behavior for MSI installations that can't be changed. Freeing up enough space on the C: drive to get the project to install would be required if (2) is true.
0 Kudos
Barvaz
Level 6

The main question remains:

If I change the destination folder (after noticed that there is not enough space in the default location ) - How can I run again costfinalize so the Installshield will now look up in the new destination folder??

The logics are working OK:

Run the Setup ---> Default ---> Ready to install ----> Not enough diskspace in C:\ ---> Custom Setup ----> change destination dialog ---> ready to install dialog ----> again not enough diskspace in C:\ (although we chose another destination with 20GB free ! (we are checking with a 1kb file! ).

Is there something to add to the event when changing the destination folder? Something to tell the installshield to calculate again for the new destination??
0 Kudos
jclark102
Level 4

I realize this thread is almost a year old, but we've found that if there isn't enough space on c in the %temp% dir, the installer just cannot recover. Found this: http://kb.flexerasoftware.com/selfservice/viewContent.do?externalID=Q105366
0 Kudos