Где я должен xcopy-развертывать мои приложения в Windows 7?

879
bitbonk

У меня есть несколько приложений, которые устанавливаются с обычным xcopy. Я знаю, что эти приложения будут записывать некоторые данные в установленный каталог во время выполнения. Теперь я хочу, чтобы это приложение было доступно для всех пользователей на моем ПК из меню «Пуск». Где я могу разместить эти приложения под Windows 7? Это все еще "c: \ Program Files"? Если это так, не нужны ли приложениям права администратора для записи в этот каталог? Это где роуминг начинает? Если это так, как я могу запретить приложению записывать в специальную роуминговую папку для каждого пользователя и вместо этого заставить его писать в ОДНУ папку, в которой находится исполняемый файл?

Обновление (перефразируя вопрос):

Каков рекомендуемый / предпочтительный / официальный способ развертывания приложения (просто папка с exe-файлом и некоторыми дополнительными файлами) на ПК пользователя Windows 7, чтобы:

  1. он будет доступен всем пользователям (каждый может дважды щелкнуть по файлу exe или ярлыку к нему)
  2. существует только один экземпляр файлов (не копия для каждого пользователя)
  3. exe-файл может читать и записывать в ту же физическую папку, в которой он находится (так что он читает те же файлы, независимо от того, какой пользователь запускает приложение)
  4. при запуске exe-файла не появляется диалоговое окно UAC с запросом привилегированных прав (exe-файл сам не делает ничего, что требовало бы этого)
3
Пожалуйста, не просто понижайте голос. Объясните (в комментариях), почему вы отклонили этот вопрос, чтобы я мог его улучшить. bitbonk 11 лет назад 0
Эти приложения вы написали или коммерческие продукты? Dave 11 лет назад 0
Этот вопрос читается как проблема XY. Можете ли вы объяснить, почему вы пытаетесь добиться этого, пожалуйста, может быть другое решение для вас. Dave 11 лет назад 0
Могут ли они просто жить на сетевом ресурсе? Таким образом, вы можете контролировать разрешения с сервера, и все, что вам нужно сделать, это скопировать ярлыки в общедоступное стартовое меню и / или рабочий стол MDT Guy 11 лет назад 0

4 ответа на вопрос

3
Der Hochstapler

Если вы хотите, чтобы приложение, чтобы быть доступным для всех пользователей, она должна быть установлена в Program Files каталога ( Program Files (x86), где это применимо) .

Приложение не сможет записывать в папку, в которой оно установлено, если только оно не запущено с повышенными привилегиями (что вам не нужно). И все равно это было бы плохой идеей. Вы никогда не должны хотеть делать это.

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

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

Проблема в том, что у меня нет контроля над исходным кодом приложения, и исполняемый файл будет пытаться записывать файлы в папку, в которой он находится. Требуется, чтобы исполняемый файл всегда записывал в одну и ту же физическую папку, а данные распределялись по всем пользователи. bitbonk 11 лет назад 0
@bitbonk: В таком случае я бы, вероятно, установил его непосредственно в общедоступный локальный профиль (он же `C: \ ProgramData`). http://superuser.com/questions/405097/are-c-programdata-and-c-users-all-users-the-same-do-i-need-both Возможно, вам придется настроить запись хотя разрешения для всех пользователей в этой папке (возможно, с использованием `icacls` в вашем установочном файле). http://serverfault.com/questions/335625/icacls-granting-access-to-all-users-on-windows-7 Der Hochstapler 11 лет назад 1
Это звучит умнее для меня. Если вы используете MDT, вы можете использовать скрипт для изменения разрешений с помощью командной строки MDT Guy 11 лет назад 0
1
harrymc

Лучше в таких случаях, чтобы остаться вне C:\Program Files, или C:\Program Files (x86)для 32-битных программ, из-за специальных разрешений, действующих на этих папках.

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

Достаточно легко создать ярлык для исполняемого файла, чтобы вы могли:

  • оставить в каталоге
  • скопировать на рабочий стол пользователя
  • зайти в меню «Пуск» пользователя
  • скопировать в меню «Пуск» для всех пользователей, которое обычно находится в
    C:\ProgramData\Microsoft\Windows\Start Menu.

Последний вариант может быть самым простым для установки.

1
heavyd

Каков рекомендуемый / предпочтительный / официальный способ развертывания приложения (просто папка с exe-файлом и некоторыми дополнительными файлами) на ПК пользователя Windows 7, чтобы:

Предлагать / предпочитать / официальный способ не делать то, что вы хотите сделать. Предпочтительный способ установки 32-битных программ, доступных всем пользователям, - это установка в папку 32-битных программных файлов. Руководство заключается в том, что любые данные приложения должны быть записаны в CommonAppDataFolderпапку.

Ваши требования противоречат официальному руководству, и вы должны пересмотреть свои требования. Вот официальное руководство от Microsoft:

0
John T

Вы можете оставить его C:\Program Files, просто изменив разрешения для папки программы, чтобы дать другим пользователям соответствующие права доступа в ACL. Вы захотите отключить наследование из родительской папки и вручную добавить пользователя «Все» с разрешениями, которые должны быть у всех.

отключить наследование из родительской папки и вручную добавить пользователя «Все» <- какую родительскую папку вы имеете в виду? bitbonk 14 лет назад 0
При редактировании разрешений для папки вашей программы в разделе «Program Files» есть флажок, чтобы отключить наследование для этой папки, как показано здесь: http://www.symantec.com/connect/sites/default/files/images/reg.GIF John T 14 лет назад 0
Одна большая проблема с размещением программ в c: \ Program Files \ заключается в том, что сама программа не имеет права на запись в свою собственную папку. Он будет использовать перемещаемую папку, что приведет к распространению данных приложения по жесткому диску. bitbonk 14 лет назад 0

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