Как противоположное мнение:
В общем, это плохая идея.В большинстве случаев правильным ответом будет установка кода приложения в соответствующую папку Program Files (64-разрядная или x86), а файлы данных - в местоположения данных и т. Д., И у пользователя не должно быть выбора.Мне не ясно, что выбор является хорошей идеей, когда (например) правила сертификации Windows говорят, что ваш код должен идти в папку Program Files, поэтому просто сделайте это правильно.Пользователи просто заботятся о том, чтобы установленное приложение работало правильно, и если оно не работает при установке в некоторых местах, то ответом является либо: 1) исправить приложение, чтобы оно работало, либо 2) использовать программные файлы и не дать пользователю выбора.
Кроме того, если вы используете проекты установщика Visual Studio, вы не можете написать собственные действия для этого, потому что все они выполняются слишком поздно, чтобы изменить место установки.Вы, кажется, уже обнаружили это.Но вы МОЖЕТЕ скрыть диалоговое окно просмотра папок и установить в правильное местоположение по умолчанию.
Другая проблема заключается в том, что неясно, как вы определяете «разрешенное» местоположение.Если это не C: \, то может ли это быть D: \ SomeOtherLocation?Это может быть подключенный USB-накопитель?Это может быть сетевой ресурс, такой как \\ Servername \ share?Подключенный диск к сетевому ресурсу?Вероятно, будет любое количество выбранных местоположений, которые не смогут установить приложение или приложение при его запуске, и я не думаю, что может быть полезный список того, что разрешено.Кроме того, предположим, что у вас установлена 32-разрядная версия, и пользователь выбирает собственную папку Program Files в 64-разрядной системе, тогда она даже не будет туда идти - она будет перенаправлена в Program Files (x86)место нахождения.Наконец, неясно, что вы делаете в режиме автоматической установки, если предположить, что пользователь указывает местоположение в командной строке, он не проходит ваш тест, а затем установка завершается неудачно (так как «без вывода сообщений» означает «без вывода сообщений», и установка может быть выполнена без присмотра).
Другими словами, просто установите в Program Files и покончите с этим.