Подтвердить что ты не робот

Является ли AppData "правильным" местом для установки приложений для конкретного пользователя (которые изменяют свои собственные данные)?

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

В Windows XP (правильно или неправильно) мы всегда устанавливали наши программы в папки под " Program Files" и принимали, что они были бы доступными для всех. Из того, что я могу собрать под Windows 7, я должен установить свое программное обеспечение в папку AppData​​b > пользователя (возможно AppData\Local\MyApp). Это имеет определенный смысл, но тот факт, что эта папка "скрыта" по умолчанию, означает, что мы будем "веселиться", разговаривая с нашими пользователями через поддержку.

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

Моя проблема - это всего лишь "скрытая папка" в AppData. Насколько я тратил MSDN, я не могу решить, где еще я должен устанавливать программы для конкретных пользователей. Взяв один из способов, похоже, что-то вроде AppData\Local\MyApp, и еще один способ, который будет казаться таким же допустимым для пользователя My Documents\MyApp.

Кто-нибудь получил четкое руководство, где все это происходит? Я обнаружил, что документы MSDN запутывают.: -)

4b9b3361

Ответ 1

Не совсем.

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

AppData, что удивительно, для данных приложения, а не для установки (в одностороннем порядке нажмите кнопку "Один раз /Silverlight " ). Вы можете и должны все еще устанавливать в Program Files, просто не ожидайте записи в эту папку.

Вы можете установить программное обеспечение в AppData, если хотите, чтобы пользователь следил за ним в среде Active Directory, что происходит, если вы поместите его в AppData\Roaming (местоположение SpecialFolder.ApplicationData).

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

Если вы хотите, чтобы настройки применялись только на локальном компьютере, вы используете AppData\Local, что равно SpecialFolders.LocalApplicationData - это сделает администраторов AD очень счастливыми, так как размер перемещаемого профиля не будет внезапно увеличиваться на 50 МБ или независимо от размера вашего программного обеспечения.

Если вы хотите создать настройки, которые применяются ко всем пользователям, то вы смотрите на SpecialFolders.CommonApplicationData

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

Не можете ли вы установить в Program Files, но использовать AppData, как предполагается, и хранить там свою базу данных?

Ответ 2

Windows 7 добавила известную папку FOLDERID_UserProgramFiles, и по умолчанию она соответствует %LOCALAPPDATA%\Programs. Это используется MSI, когда ALLUSERS = 2 и MSIINSTALLPERUSER = 1.

В Vista и ранее нет канонической папки для каждого пользователя, но использование %LOCALAPPDATA% довольно распространено. К сожалению MSI будет использовать% ProgramFiles% для этих систем.

Ответ 3

Структура папок Windows 7 глубоко вдохновлена ​​структурой Unix:

/usr/ -> C:\Program Files\ -> binaries: executables and dynamically linked
/etc/ -> C:\ProgramData\ -> global settings
/home/ -> C:\Users\ -> a folder for each user
~/.* -> C:\Users\Hikari\AppData\Roaming\ -> settings for each user

В Windows больше папки, например My Documents, для файлов с контентом, созданным пользователем, AppData Local и Roaming (который Unix обычно обрабатывает с помощью NFS).

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

Когда установка устанавливает приложение, эта настройка должна иметь разрешение на запись в Program Files. После завершения настройки программные файлы должны быть доступны для записи только для других установок, направленных на обновление двоичных файлов в других версиях.

Ответ 4

Пожалуйста, установите исполняемые файлы в папку% programfiles% в Windows - простой установочный пакет на основе MSI может выполнять активную настройку для любого нового пользователя, который регистрируется на компьютере, чтобы создавать файлы и папки, определенные пользователем, в своих профилях% appdata% папка. Вы видите это поведение для Internet Explorer, Adobe Reader и т.д. - Это небольшое окно установщика MSI, которое появляется при первом входе в систему на компьютере, на котором установлены эти приложения. - Спасибо - системный администратор:)

Ответ 5

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

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

\Program Files\Your Program\Program_v0.1\Program.exe
\Program Files\Your Program\Program_v0.2\Program.exe
\Program Files\Your Program\Program_v0.3\Program.exe
\Program Files\Your Program\Program_v0.4\Program.exe

Затем я разместил пусковую установку для запуска:

\Program Files\Your Program\ProgramLauncher.exe

Затем папка данных пользовательских приложений будет содержать только данные, включая файл INI/XML/Settings, который указывает версию программы, с которой работает этот пользователь.

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

В противном случае, пойдите прямо с установкой программ в AppData и отмените годы, которые он принял для достижения чистого разделения кода и данных. Я нашел этот поток, потому что заметил, что Chromium и DropBox устанавливают код в AppData. Я собираюсь удалить эту программу и изменить разрешения в моей папке AppData, чтобы исключить выполнение, чтобы я мог легко обнаружить другие программы, пытающиеся использовать тот же BS.