2014-01-21 3 views
1

Я разработал приложение для Windows, и теперь мне нужно настроить установщик (я использую NSIS). Программа имеет двоичные файлы, которые я устанавливаю в C:\Program Files\<My App>\. Он также требует user folder, что важно для пользователей. Эта папка содержит файлы, созданные программой, и пользователи могут часто использовать их и, следовательно, иметь легкий доступ к этой папке.Где мне нужно установить папку пользователя моей программы под Windows

Мой вопрос: является ли правильным местоположение этого user folder, которое будет удовлетворять пользователей с правами администратора и без них для всех версий Windows, начиная с XP?

Я читал об этом MS article. Он описывает коды разных мест, но не отвечает на вопрос, какой из них правильный. Я попытался использовать папку ProgramData, но оказалось, что эта папка по умолчанию скрыта в Windows 8. Объяснение пользователям, как сделать это видимым, похоже, не является хорошим пользовательским интерфейсом.

ответ

2

Правильное расположение APPDATA, если файлы, которые должны быть сохранены различны для каждого пользователя или Programdata, если они одинаковы для всех пользователей , Если вам нужно, чтобы ваши пользователи автоматически открывали папку, вы можете создать ярлык папки рядом с ярлыком вашего приложения, поэтому вам не нужно объяснять, как сделать папку видимой в тех системах, где она скрыта по умолчанию.

@Feco Неправильно хранить файлы приложений в папке Program Files, это местоположение, для которого требуются административные привилегии, поэтому НЕ все пользователи могут там писать. В папках Program Files вы должны установить только ваши двоичные файлы приложений, если приложение необходимо установить для каждой машины. Если приложение должно быть установлено для каждого пользователя, то папка APPDATA является одной.

Кроме того, установка приложений непосредственно на «C: \» (корень раздела Windows) является старой привычкой, а не стандартной практикой. Это не имеет преимуществ по сравнению с установкой приложения в Program Files и просто приводит к загромождению вашей файловой системы различными папками приложений на «C: \».

2

Почему бы вам не создать дополнительную папку в папке C:\Program Files\<My App>? Все пользователи имеют необходимые права (чтение/выполнение) там, и вы даже можете указать эту папку без ссылки на сам диск с $PROGRAMFILES переменной:

SetOutPath $PROGRAMFILES\<My App>\userFolder 

Пользователи могут затем открыть файл с этого места, если им нужно.

В качестве альтернативы вы можете установить программу My App в корне (в данном примере C:\) и создать userFolder в нем измените права на эту папку с помощью пакетного файла:

SetOutPath $TEMP 
    File "MyBatchFIle.bat" 
     FileOpen $4 "$TEMP\MyBatchFIle.bat" w 
     FileWrite $4 'icacls "C:\<My App>\userFolder" /grant Users:(OI)(CI)M' 
     FileClose $4 
    ExecWait "$TEMP\MyBatchFIle.bat" 

это будет предоставлять права Modify для всех Пользователи.

Вот хороший гид для icalcs если вам нужны различные настройки - http://technet.microsoft.com/en-us/library/cc753525.aspx

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

  • Нет связанных вопросов^_^