Где моя win32 программа должна сохранить свои файлы?

Выходная последовательность стирания ANSI до конца строки \033[K может использоваться с cat (см., Например, здесь ):

for (word in c("a", "long message", "c")) {
  cat("\r", "\033[K", word)
  flush.console()
  Sys.sleep(1)
}

11
задан GEOCHET 23 February 2009 в 22:57
поделиться

8 ответов

По-видимому, это - "лучшие практики" для установки по умолчанию к установке под "c:\Program Files\AppName"

Близко, но не совсем. Пользователи могут настроить название папки Program Files и даже не могут иметь C: диск. Вместо этого установка на %ProgramFiles%\AppName папка переменной среды. Обратите внимание, что необходимо предположить, что у Вас только есть доступ для чтения к этой папке после того, как установка закончилась.

Для файлов данных программы, где Вам, возможно, понадобился бы доступ для записи, использовать %AppData%\AppName.

Наконец, действительно ли Вы уверены, что Ваш - единственное приложение с тем именем? Если Вы не на 100% уверены в этом, Вы могли бы хотеть включать свое название компании там также.

Механизмы, которые Вы используете для получения тех переменных, будут варьироваться в зависимости от платформы программирования. Это обычно сводится SHGetFolderPath() Метод Win32 в конце, но различные платформы как Java или .NET может обеспечить более простые абстракции также.

15
ответ дан 3 December 2019 в 03:19
поделиться

Для Ваших двоичных файлов приложения можно предположить, что можно записать в каталог PROGRAM FILES (используйте %ProgramFiles переменную среды % для поддержки установок кроме английской версии по умолчанию - например, в немецких Установках это будет c:\Programme по умолчанию). Википедия перечисляет наиболее распространенные переменные. Другой опцией является SHGetFolderPath или более новые функции SHGetKnownFolderPath.

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

Относительно плагинов это могло бы быть более сложно. Швы лучшей практики для предложения опции установить для текущего пользователя только и размещения плагина в пользовательском каталоге или установки для всех пользователей и поместить файлы в каталог программных файлов (но не забыть проверять на разрешение записи и запрашивать поднятый доступ в случае необходимости).

2
ответ дан 3 December 2019 в 03:19
поделиться

Существует много переменных среды как: % %USERPROFILE, %HOMEPATH %, %APPDATA % все эти точки к некоторым определенным для пользователя каталогам, куда можно поместить определенные для пользователя файлы.

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

0
ответ дан 3 December 2019 в 03:19
поделиться

Некоторые инструкции находятся в этой Статье базы знаний: Как записать Приложение Windows XP, которое хранит пользователя и данные приложения в корректном месте при помощи Visual C++. Кроме того, при поиске MSDN Windows Logo Program, Вы найдете документацию относительно того, что приложение должно сделать, чтобы быть действительно совместимым.

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

Однако если Вы, приложение шло с документацией, в которой было сказано "все используемое этим приложением, находитесь в этом каталоге", я любил бы его ;)

9
ответ дан 3 December 2019 в 03:19
поделиться

Используйте Windows SHGetFolderPath () функция для получения корректных каталогов.

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

Если Ваша программа должна использоваться многочисленными пользователями в системе, копирование материала в "Мои Документы" не собирается работать - файлы были бы доступны только для пользователя, устанавливающего приложение. Хуже, если единственный пользователь Вашего приложения должен был установить как Администратор, то [s] у него не будет доступа к файлам также. Таким образом, если Вы не вполне уверены, что существует только один пользователь для Вашего приложения, и у них есть достаточные полномочия установить приложение с помощью их собственной учетной записи, не используйте "Мои Документы".

IMO необходимо установить файлы примера в каталог, определенный CSIDL_COMMON_APPDATA. Это даст Вам точно одну копию для всех пользователей, и так как Вы хотите, чтобы каждый пользователь видел исходные, неизменные файлы примера, все пользователи должны считать их только для чтения. На самом деле Ваша программа установки должна, вероятно, сделать их только для чтения. Открытие одного из образцов будет работать на всех пользователей, но как только они пытаются сохранить свои модификации, приложение должно обнаружить, что файл только для чтения, и откройте диалоговое окно "Save As", указав "на Мои Документы" или подходящий каталог внутри. Это также сохранит все пользовательские модификации, когда установщик обновит файлы примера позже.

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

6
ответ дан 3 December 2019 в 03:19
поделиться

У нас есть подобное приложение, созданное ~10 лет назад с помощью MFC. Самая легкая вещь сделать была, создают папку сразу же C:\ (e.g. C:\OurApp). Никакие файлы установки, никакие специальные полномочия, никакие изменения реестра, и т.д. Клиенты (и особенно их sys администраторы) ЛЮБЯТ его.

Еще одно соображение - Вы планируете внезапно изменить папку установки для существующих клиентов (предполагающий, что это установлено во многих местоположениях)? Если что-то не, повредился, почему фиксируют его?

-2
ответ дан 3 December 2019 в 03:19
поделиться

Извините я не знаю корректный ответ, но...

У Вас есть экономическая модель для желания сделать это? Ваши клиенты жалуются, что файлы не хранятся, где они ожидают? Вашим приложениям наносят вред в некотором роде, потому что Вы храните файлы в нестандартных местоположениях? В противном случае я не вижу оснований для того, чтобы провести время и бюджет для восстановления стратегии хранилища файлов только для встречи "лучшей" практики. Если Ваши программы просто работают, то, по моему скромному мнению, необходимо оставить их в покое и потратить деньги и время на вещах тот вопрос.

-1
ответ дан 3 December 2019 в 03:19
поделиться

Существует структура каталогов под c:\users для ориентированных данных пользователя.

Существует документация для портирования приложений из более старых окон OSs to Vista.

Проверьте http://www.innovateon.com и перейдите по ссылкам к Vista. Существует документация относительно сертификации, которая имеет детали о темах как это.

-1
ответ дан 3 December 2019 в 03:19
поделиться
Другие вопросы по тегам:

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