Проект установки VS2008: совместно использованный (всеми пользователями) файлы данных приложения?

Я не уверен, является ли решение питоновым или нет, но я использую его довольно часто с небольшими изменениями: парсер выполняет свою работу в генераторе и дает результаты и код состояния. Код приема принимает решения о том, что делать с несостоявшимися элементами:

def process_items(items)
    for item in items:
        try:
            #process item
            yield processed_item, None
        except StandardError, err:
            yield None, (SOME_ERROR_CODE, str(err), item)


for processed, err in process_items(items):
    if err:
       # process and log err, collect failed items, etc.
       continue
    # further process processed

. Более общий подход - практиковать использование шаблонов проектирования. Упрощенная версия Observer (при регистрации обратных вызовов для определенных ошибок) или вид Visitor (где у посетителя есть методы для обработки определенных ошибок, см. SAX для анализа) может быть ясным и понятным решением.

31
задан Lyman Enders Knowles 2 November 2008 в 01:52
поделиться

5 ответов

Я изучил ответ на свой вопрос через другие источники, да, да! К сожалению, это не решило мою проблему! Что, это делает меня - верхнее фиксатором? Да, да!

Для помещения материала в подкаталог папки Common Application Data из проекта Установки VS2008 вот то, что Вы делаете:

  1. Щелкают правой кнопкой по Вашему проекту установки в Проводнике Решения и выборе "Представление-> Файловая система".

  2. Щелкают правой кнопкой по "File system on target machine" и выбору, "Добавьте Специальная Папка-> Пользовательская Папка".

  3. Переименовывают пользовательскую папку к "Папке Данных Распространенного приложения". (Это не имя, которое будет использоваться для получающейся папки, оно должно только помочь Вам сохранить его прямо.)

  4. Изменение свойство DefaultLocation папки к" [CommonAppDataFolder] [Производитель] \[ProductName]". Отметьте подобие со свойством DefaultLocation Папки приложения, включая нечетное использование единственной обратной косой черты.

  5. Чудо на мгновение в смешном (все же бесспорный) то, что существует свойство папки, названное "Свойство ".

  6. Изменение свойство Property папки к "COMMONAPPDATAFOLDER".

Файлы данных, помещенные в папку "Common Application Data", будут скопированы в" \ProgramData\Manufacturer\ProductName" (на Vista) или "\Documents and Settings\All Users\Application Data\Manufacturer\ProductName" (на XP), когда установщик будет запущен.

Теперь оказывается, что в соответствии с Vista, неадминистраторы не добираются, изменяют/доступ для записи в файлы в здесь. Таким образом, все пользователи добираются для чтения файлов, но они вкладывают это "\Program Файлы" также. Таким образом, то, что, интересно, является точкой папки Common Application Data?

20
ответ дан 27 November 2019 в 22:37
поделиться

Это работало на меня использующий VS2005, но я должен был изменить DefaultLocation, я добавил '\' для разделения CommonAppDataFolder.

[CommonAppDataFolder] [Производитель] [ProductName]

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

1
ответ дан 27 November 2019 в 22:37
поделиться

Я решил его этот путь. Я сохранил файл базы данных (.sdf) в той же папке как, где приложение установлено (Папка приложения). На вкладке безопасности в окне свойств для основного проекта я проверил, "Включают Настройки безопасности ClickOnce" и выбранный, "Это - полное доверительное приложение", восстановил и выполнил установку. После той никакой проблемы безопасности

я использую Visual Studio 2008 и Windows Vista

6
ответ дан 27 November 2019 в 22:37
поделиться

I had the same issue. The setup project gives the user the option to install the app "for the current user only" or "for all users:. Consequently, the database file would end up in either the current user's or the All Users application data folder. The setup would have to write this information somewhere so that the application can later retrieve it, when it comes to accessing the database. How else would it know which application data folder to look in?

To avoid this issue, I just want to install the database in the All Users/Application Data folder, regardless if the application was installed for one user or for all users. I realize, of course, that two users could not install the application on the same computer without overwriting each other's data. This is such a remote possibility, though, that I don't want to consider it.

The first piece of the puzzle I got here:

Form_Load(object sender, EventArgs e)
{
  // Set the db directory to the common app data folder
  AppDomain.CurrentDomain.SetData("DataDirectory", 
            System.Environment.GetFolderPath
           (System.Environment.SpecialFolder.CommonApplicationData));
}

Now we need to make sure that the data source contains the DataDirectory placeholder. This piece came from here. In the DataSet designer, find the DataSet's properties, open the Connection node and edit the ConnectionString property to look as follows:

Data Source=|DataDirectory|\YourDatabase.sdf

Then I followed Lyman Enders Knowles' instructions from above for how to add the Common Application Data Folder to the setup project and placed the database file in that folder.

I then followed Ove's suggestion from above, i.e. I checked the "Enable ClickOnce Security Settings" and selected "This is a full trust application.

After that, the application deployed fine on Vista and the database file was accessible for both reads and writes.

1
ответ дан 27 November 2019 в 22:37
поделиться

Я не уверен, поможет ли это в Вашем случае или нет.

, Но если Вы добавляете частный раздел к файлу конфигурации своего приложения

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

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

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

0
ответ дан 27 November 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: