2014-06-06 3 views
0

Я создал программу установки MSI моей программы C# VS2008. Программа считывает данные из xml-файла, находящегося в папке установки, и копирует файл excel, который можно найти в той же папке.Ошибка программирования программы после установки MSI

Когда я запускаю это как в режиме отладки, так и в режиме Release, он работает нормально. Однако, после того, как с помощью программы установки MSI, и я использую реальный исполняемый файл, я получаю следующие ошибки:

Error: Access to path C:\ is denied. (This has now been resolved)

Error: No matching profile found. Contact your service provider. (This has now been resolved.)

Error: The given key was not present in the dictionary. (This happened on another machine, a laptop, when trying to convert from csv to excel.)

Любые идеи о том, что может быть причиной этого после MSI установить?

Редактировать: первые две ошибки были устранены, однако третья ошибка по-прежнему сохраняется.

+1

Ваш код использует класс словаря, возможно, связан с XML-файлом, и после его чтения вы ссылаетесь на ключ, который не существует. Я предполагаю, потому что вы ничего не сказали о том, что ваша программа действительно делает с файлом xml. Это должно быть легко отлаживать, сделав ваш код немного умнее и тестируя, что ключ существует до его использования. Возможно, вы загрузили неправильный файл Xml. Вы просите нас выяснить, почему ваш код не работает с файлом Xml, не отображая код или Xml из фактической папки установки! – PhilDW

+0

Да, мне удалось найти его. По какой-то причине на одном компьютере он принял Workbooks.Worksheets [1] как выбор для листа Excel, на который я передавал информацию, но на другом компьютере он считал, что это выходит за рамки.Я исправил его, введя имя рабочего листа. – user3215251

ответ

0

Просто из любопытства: какую платформу .NET вы используете на своей машине сборки и какая платформа .NET установлена ​​на ноутбуке? Вам также нужен установщик Windows. Версии имеют значение, поэтому проверьте, есть ли у вас одинаковые версии установщика Windows на вашей машине и на ноутбуке.

+0

На моей машине я кодирую VS2008 .Net 3.5, а ноутбук имеет как минимум 4.5 для .Net. – user3215251

+0

как насчет установки Windows? являются ли 32 бит x64? – martin

+0

Что я не уверен. Мне нужно выяснить, как это проверить. – user3215251

0

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

/Обновлено после первого комментария/

Кроме того, вы можете найти то, что ссылки используются на свойства раствора. Смотрите ниже изображение,

enter image description here

Это покажет, какие ссылки используются. Более того, все, что говорит True в колонке Копирование локального должно находиться в той же папке, что и программа на целевом компьютере, и ее необходимо зарегистрировать. False означает, что они находятся в платформе .NET и не нуждаются в копировании на целевой компьютер, так как это будет в платформе .NET.

Кроме того, вы можете использовать следующую команду, чтобы зарегистрировать компоненты,

На 32-битном компьютере:

"regsvr32.exe" "component file path and name"

На 64-битном компьютере:

"C:\Windows\SysWOW64\regsvr32.exe" "component file path and name"

Вы можете запустить через VBScript (* .vbs).

+0

Как мне узнать, что требуется? Я включил DLL и все необходимые файлы. Наверное, это часть Регистрации, которую я мог бы пропустить. – user3215251

+0

Я обновил ответ. Пройдите через это снова. –

Смежные вопросы