Showing results for 
Show  only  | Search instead for 
Did you mean: 
Level 4

Directory table property NOT getting set during CostFinalize?

I am working on a migrated script - came from IS12, from IS 8.
Worked on IS 8 for many years.

During setup the user is presented with a dialog called Destination Folders - here the dialog contains 3 values - these values are entries in the Directory table - each equating to WindowsVolume\directory name

These values are shown on the dialog as text [INSTALLDIR], [INSTALLDATADIR] and [SHAREDDATADIR]
Next to each is a Change button which calls a browsing dialog

The problem I have been fighting is that the middle value is not getting filled. Both of the other values are being filled.
This dialog was original - not changed - and had worked before.
I compared side-by-side the old running in IS 8 with the new in IS 2008 and there was no difference.

I tried renaming INSTALLDATADIR to TESTPRJDIR and no difference.

IS2008 Help states under Directory Table: "Note that when the directories are resolved during the CostFinalize action, the keys in the Directory table become properties set to directory paths."

The problem here is that the directory table key for the middle value sought is NOT getting set to a property - ?CostFinalize is failing? - it remains undefined as demonstrated by attempting to click the Change button associated with this property.
Clicking Change calls spawndialog on a directory finding dialog which works on the other two - but on this one, since the value is empty ?probably?, reports Error 2343 Specified path is empty.

There is another post about this same error:
so I am not the only one - I can confirm jchristmans bug - we need help!
I did not want to post on his question as a reply usually indicates an answer... and I have provided a bit more information.

This seems an simple problem setup, basically a pick 3 destination folders dialog with 3 destinations saved to directory table entries that are supposed to become properties - I hope someone can help.

Labels (1)
0 Kudos
(5) Replies
Level 3

Please check log file created during information. You should see lines like "Property change: INSTALLDATADIR old value="something", INSTALLDATADIR new value="new_something". Tese lines appear only if you use MSI 3.0 and up. They come immediately after you press next button on your dialog.
If you use MSI 2 then you can read this property only after installation is finished.
If you do not see these lines then you have a problem with binding your text box with properties. Please check ControlEvent SetTargetPath associated with the next button on that dialog. Also check IndirectPropertyName of the edit box properties.


0 Kudos
Level 4

Here is a portion of the log file beginning after the 'license' dialogs - when this dialog is created. The problem is not the 'assignment' of the value by the get new directory dialogs - although that is what the error is from I think - the problem is the value is not getting pre-assigned PRIOR to the dialog creation which is supposed to happen in CostFinalize.

As shown here - I clicked the first and third Change options for the other two - as they have default paths showing - then I clicked the one I am having trouble with - the script shows the error and terminates the install.
I rewrote the entire dialog and added individual new directory dialogs to try and ensure this is not the problem - no change.
Current dialogs:
Dialog name
InstallChangeDialog property value
Tail (PathEdit) _BrowseProperty
event: SetTargetPath [_BrowseProperty]
event: EndDialog Return

same as above with _BrowseProperty1

same as above with _BrowseProperty2

Actual log:

Action 10:31:30: DestinationFolder. Dialog created
Action 10:33:07: SetupType. Dialog created
Action 10:33:27: DestinationFolder. Dialog created
Action 10:33:29: SetupType. Dialog created
Action 10:33:30: DestinationFolder. Dialog created
MSI (c) (54:80) [10:33:32:127]: PROPERTY CHANGE: Adding _BrowseProperty property. Its value is 'INSTALLDIR'.
Info 2898.For Arial8 textstyle, the system created a 'Arial' font, in 0 character set.
Action 10:33:32: InstallChangeFolder. Dialog created
MSI (c) (54:80) [10:33:35:268]: PROPERTY CHANGE: Adding _BrowseProperty2 property. Its value is 'SHAREDDATADIR'.
Action 10:33:35: InstallSharedChangeFolder. Dialog created
MSI (c) (54:80) [10:33:38:064]: PROPERTY CHANGE: Adding _BrowseProperty1 property. Its value is 'LOADDATADIR'.
MSI (c) (54:80) [10:33:38:096]: Note: 1: 2343
Error 2343.Specified path is empty.
MSI (c) (54:80) [10:33:39:861]: Product: TestQuest Pro -- Error 2343.Specified path is empty.
Action ended 10:33:39: InstallWelcome. Return value 3.
MSI (c) (54:10) [10:33:40:049]: PROPERTY CHANGE: Deleting RESUME property. Its current value is '1'.
MSI (c) (54:10) [10:33:40:096]: PROPERTY CHANGE: Deleting Resume property. Its current value is '1'.
MSI (c) (54:10) [10:33:40:127]: PROPERTY CHANGE: Deleting UpdateStarted property. Its current value is '1'.
MSI (c) (54:10) [10:33:40:158]: Doing action: SetupCompleteError
Action 10:33:40: SetupCompleteError.
Action start 10:33:40: SetupCompleteError.
Action 10:33:40: SetupCompleteError. Dialog created
Action ended 10:33:41: SetupCompleteError. Return value 2.
Action ended 10:33:41: INSTALL. Return value 3.
MSI (c) (54:10) [10:33:41:768]: Destroying RemoteAPI object.
MSI (c) (54:14) [10:33:41:830]: Custom Action Manager thread ending.

More Information
I had a heck of a time, very difficult to figure out how to use the MSI Debugger, but I finally found it in the menu item (Hey Macrovision: seriously need a right-click menu in the MSI Debugger) and set a breakpoint on DestinationFolder dialog.
At the just before this dialog is shown - all properties are supposed to have been set - I DO see INSTALLDIR and SHAREDDATADIR - but there is NO item listed called LOCALDATADIR - as should exist.

For some reason - this value is not getting put into the table - so when the DestinationFolder Dialog opens - there is no data pre-filled in and shown - which is what would be passed to the InstallLDChangeFolder browse dialog. Does not make much sense as the SHAREDDATADIR property, defined identically - IS working... (and keep in mind these have been in since IS 8 - this is a very old migrated setup - they had always worked in prior builds).

Any ideas - Thanks...

0 Kudos
Level 17

I'm just taking a guess. Perhaps the Keep Unused Directories setting on the Build tab in the Releases view is set to No. If this is set to No and a directory that is listed in the Directory column of the Directory table is not referenced in any known location in the .msi file, InstallShield removes it from the Directory table of the .msi file that it creates at build time.

So, if you change the value of that setting to Yes, does the issue go away?

Debbie Landers
Macrovision Corporation
0 Kudos
Level 3

Please check if you binds edit box with some property and if this property is prefilled with some value.
To eliminate most of such problems run validation tool and there should not be any error or warning. Thus you ensure yourself from falling into situations that are difficult to resolve them not kowing all details.

0 Kudos
Level 2

DebbieL-Your guess is correct in my case.Thanks !!
0 Kudos