Нарушение лучших практик установщика Windows заключается в жестком кодировании установщика на любой конкретный диск. Вот почему мы используем такие вещи, как [WindowsVolume] и [ProgramFilesFolder].
Тем не менее, для настраиваемого действия можно условно предоставить переопределение во время установки при условии, что если настраиваемое действие не может найти конкретное переопределение, оно вернется к стандартным рекомендациям.
Forexample
Уважать командную строку по умолчанию в качестве первого приоритета.
Попробуй установить D: \ AppData
Попробуй установить C: \ AppData
Иначе По умолчанию [WindowsVolume] \ AppData (не выполняется пользовательским действием, встроено в таблицу каталогов)
Затем предоставьте диалоговое окно, позволяющее пользователю интерактивно переопределить
Когда я говорю «Попробуйте», я имею в виду написание некоторого кода, чтобы увидеть, существует ли фиксированный диск с этой буквой
Теперь проблема для вас заключается в том, что это звучит так, как будто вы используете проекты развертывания Visual Studio, и, честно говоря, этот инструмент не даст вам необходимой гибкости (без некоторой умной постобработки), чтобы вставить настраиваемое действие так, как вам нужно. вам это нужно. Предполагая, что ваши инструменты будут поддерживать то, что вам нужно, напишите пользовательское действие, которое:
Запланировано до затрат. Инициализация в пользовательском интерфейсе и в последовательности выполнения (для поддержки автоматической установки)
Условие, чтобы оно не запускалось, если свойство уже установлено (для соблюдения командных строк) и если продукт не установлен (вы не можете изменить каталог во время операции восстановления или исправления; она исправлена)
Запланируйте его запуск только один раз (чтобы ЦС не отменял изменения, сделанные в диалоговом окне)