Vs 2010 Приложение Click Once, написанное на С#, копирует файлы xml в другой каталог.

  1. У меня есть надстройка Excel, которую я разработал с помощью C# и опубликовал в сети с помощью ClickOnce из VS2010.

  2. Приложение предполагает, что все файлы xml, которые я в нем использую, находятся в той же папке, что и само приложение.

  3. Но когда пользователь устанавливает мое приложение с помощью ClickOnce

файлы приложения копируются в одну папку ( C:\Users\myUser\AppData\Local\Apps\2.0\4THJAWJK.HYG\5N2YL58D.X55\ical..vsto_d6a691f9c1918311_0006.0000_ac7a074687bf4c5e )

файлы данных в виде xml копируются в другое место ( C:\Users\myUser\AppData\Local\Apps\2.0\4THJAWJK.HYG\5N2YL58D.X55\ical...dll_d6a691f9c1918311_0006.0000_none_a70d8116aa98d903 )

Вопрос в том, есть ли у меня какая-либо конфигурация в Visual Studio, которая заставит все файлы копироваться в одну папку после установки, или есть ли другой способ сделать это?

Спасибо.


person Sergey Kucher    schedule 15.06.2011    source источник


Ответы (1)


Я думаю, что есть несколько решений вашей проблемы в зависимости от цели вашего XML-файла.

Вариант 1. Если вы хотите копировать XML-файл в корневой каталог установки вашего приложения каждый раз, когда вы публикуете приложение, все, что вам нужно сделать, это открыть диалоговое окно свойств вашего проекта, перейти к Вкладка «Публикация» и откройте диалоговое окно «Файлы приложения…».

По умолчанию, когда файл XML включен в проект, ClickOnce указывает, что эти файлы должны быть опубликованы как «файл данных» (в параметре «Состояние публикации»).

Измените Статус публикации на Включить, и XML-файл будет скопирован в вашу папку установки, а не в папку данных.

Вариант 2. Если вы хотите создать XML-файл, который будет использоваться для кэширования пользовательских настроек, которые должны сохраняться при обновлении приложения, я рекомендую выводить XML-файл по умолчанию, как указано в шаге 1. однако при запуске приложения проверьте, находится ли файл XML в папке настроек, которую вы создали в папке профиля пользователя. При первом запуске приложения вам также необходимо будет проверить, существует ли ваша папка в профиле пользователя. Если нет, создайте его и скопируйте файл XML по умолчанию.

В вашем приложении вы можете получить папку данных пользователя с помощью следующей строки кода:

string folder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.UserProfile);

У вас должен быть полный доступ к папке профиля пользователя для создания папок и копирования содержимого, поэтому вам придется беспокоиться об администраторских или специальных привилегиях.

person RLH    schedule 16.06.2011
comment
О вашем первом решении: я не вижу диалоговое окно «Файлы приложения», в чем может быть проблема, используя vs2010 professional - person Sergey Kucher; 17.06.2011
comment
Второй вариант — единственный, который разрешен надстройками Office, спасибо! - person Sergey Kucher; 17.06.2011
comment
Ах, извините за это. Я никогда не работал с офисными надстройками, однако опубликовал множество приложений ClickOnce. - person RLH; 17.06.2011
comment
Диалоговое окно «Файлы приложений» для приложений VSTO отсутствует, и он будет развертывать XML только как файлы данных. Вы можете получить их программно из расположения ApplicationDeployment.DataDirectory и скопировать их обратно в ту же папку, что и ваш exe, если они вам там нужны. - person RobinDotNet; 08.07.2011