Регистрация формы InfoPath и странный путь к регистру файлов: что здесь происходит? - PullRequest
0 голосов
/ 26 октября 2009

Недавно мне пришлось решить очень странную проблему с полностью доверенной формой InfoPath 2007 на сайте клиента. Форма является частью приложения для управления записями, и пользователи запускают форму из приложения.

Однако, поскольку форма часто обновляется, мы храним «главную» копию файла формы на сервере клиента. Каждый раз, когда пользователь запускает форму из нашего приложения, наше программное обеспечение копирует файл формы .xsn локально в папку Application Data, регистрирует локальную копию и затем запускает ее. Обратите внимание, что мы не используем сертификаты, поэтому нам необходимо программно регистрировать форму при каждом ее запуске.

У этого клиента возникли проблемы с запуском формы из нашего приложения на одной из его рабочих станций. В журналах указывалось, что форму не удалось зарегистрировать на этой конкретной рабочей станции (форма регистрируется и нормально открывается на других рабочих станциях, все из которых работают под управлением Windows XP).

Наше программное обеспечение использует класс InfoPath.ExternalApplication для регистрации и запуска файла .xsn. Следующий VBScript воспроизвел проблему на проблемной рабочей станции:

Set infoPathApp = CreateObject("InfoPath.ExternalApplication")

'This line produces a pretty generic "Form template could not be registered" error,' 
'with absolutely no details as to *why* it could not be registered.'
infoPathApp.RegisterSolution "C:\Documents And Settings\All Users\Application Data\MyCompanysApp\MyCompanysInfoPathForm.xsn", "overwrite"

действительно странная вещь, которую я не могу на всю жизнь понять , это то, что если я изменюсь

"C:\Documents And Settings\All Users\Application Data\MyCompanysApp\MyCompanysInfoPathForm.xsn"

к этому:

"C:\Documents And Settings\All USers\Application Data\MyCompanysApp\MyCompanysInfoPathForm.xsn"

Тогда форма отлично регистрируется, и пользователь может открыть форму без проблем! Обратите внимание, что разница между рабочим и нерабочим кодом only заключается в том, что я изменил «All Users» на «All USers» (заглавными буквами первый «S» в «Users»).

Что, черт возьми, здесь происходит? Почему регистр filepath вообще имеет значение для InfoPath? Более того, почему нечетная версия (с «Все пользователи») работает, а (очевидно, более корректная «Все пользователи») не работает?

Кроме того, что бы это ни значило, папка «Все пользователи» отображается как «Все пользователи», а не как «Все пользователи» в проводнике Windows и в свойствах файла.

Обновление

Я могу только предположить, что что-то отличается между двумя рабочими станциями, но я не знаю, что искать с точки зрения различий. Я понимаю, что не предоставил много деталей в этом вопросе (потому что я действительно не знаю, что может быть причиной такого поведения), но если у кого-то есть какие-либо подсказки или возможные причины, я буду рад их услышать.

1 Ответ

1 голос
/ 05 ноября 2009

Это выстрел в темноте, но:
Вы пытались очистить кэш Internet Explorer и перезагрузить рабочую станцию?
(В IE перейдите к Инструменты -> Свойства обозревателя , нажмите Удалить ... , нажмите Удалить все ... )

Также очистите кэш формы InfoPath, пока вы там.

InfoPath сохраняет данные формы в этом кэше и, похоже, не очищает их должным образом. Это вызывает у меня немало проблем, когда старый файл открывается из кеша, когда его не должно быть. Изменение в пути может привести к отсутствию кэша, позволяющему вашему коду работать правильно.

Если это не сработает, следующий вопрос, который у меня возник бы, будет:
У вас есть эта проблема для всех пользователей на этой рабочей станции, или вы пробовали ее только с одним пользователем?

...