View Full Version : Problem with single quote (apostrophe) in Dynamic File linking path

11-09-2005, 10:12 AM

Today I upgraded from InstallShield Developer 7.04 to InstallShield 11 Pro. The conversion of my existing project succeeded without errors. However, when I tried to build it, I got error -6102 (Error searching for dynamic files matching "<Build_Server>\System Dll's\*.*"). When I searched for this value, I found it was used in the ISDynamicFile table, for a component that didn't exist. The folder itself isn't used anymore (some time ago I made merge modules for a large number of shared components) and doesn't exist anymore.

When I try to change the entry in ISDynamicFile via the Direct Editor, the changes aren't applied (when I try to remove the row, it re-appears automatically).

I tried creating a new component with the same name, but I can't remove it anymore. The error is Windows Installer Error 2237: <somefile> SELECT * FROM 'ISDynamicFile' WHERE 'Component_' = 'TestComponent' AND 'SourceFolder' = '\\server\path\System Dll's', MsiOpenDatabaseView()

Can I permanently remove the row in ISDynamicFile?
Is there another way to change the value of the SourceFolder column in ISDynamicFile?
Can I configure InstallShield to ignore the rows that aren't needed (like ISdev 7.04 did)?

Stijn Van De Putte

11-09-2005, 11:37 AM
I found a work-around by replacing the single quotes (apostrophes) by blanks, using a HEX editor. But shouldn't there be a better (read: proper) way to do this?

11-09-2005, 02:59 PM
I see two issues:

1) Use the accent grave ( ` ) in queries at field and table names, and a single quote ( ' ) at values. So the query should read:

SELECT * FROM `ISDynamicFile` WHERE `Component_` = 'TestComponent' AND `SourceFolder` = '\\server\path\System Dll's'

2) Note that the last value itself contains an escape character ( "System Dll's" ). You cannot solve that in one query - unless you manage to get rid of that value. Consider leaving out the last condition, fetch all records and determine the right record.