Проект установки / установки Windows: принудительная установка в «Program Files», а не в x86? - PullRequest
4 голосов
/ 15 марта 2012

Моему боссу нужен установщик для установки программного обеспечения на одну из машин нашего клиента.Он хочет, чтобы программное обеспечение было установлено специально в «C: \ Program Files \ HisApplicationName», а не в «C: \ Program Files (x86) \ HisApplicationName».Я знаю, что правильным ответом было бы переписать программное обеспечение, чтобы оно соответствовало любому каталогу, в который пользователь выбирает установку, но, к сожалению, это очень старое программное обеспечение, и его нужно установить завтра, поэтому мы просто хотим, чтобы установщик указал клиентуКаталог «Program Files».

Однако моя проблема заключается в том, что когда я жестко прописываю путь к файлу в свойстве установщика «DefaultLocation», установщик все равно пытается указать на каталог Program Files (x86).1004 * Есть ли способ заставить пакет установки / установки Windows указывать на Program Files, а не на «Program Files (x86)»?

Спасибо.

1 Ответ

14 голосов
/ 15 марта 2012

То, что вы просите сделать, просто невозможно с помощью установщика Windows, за исключением одного неподдерживаемого подрывного хака.

Установите INSTALLDIR на C:\Progra~1\.....

См., У MSI есть функциональность для обратной совместимости, которая автоматически "исправляет" любые жестко закодированные ссылки от C:\Program Files\ до C:\Program Files (X86), когда MSI отмечен как 32-битный. Он не может рассчитать версию короткого имени и перенаправить ее, чтобы мой хак работал. Предполагая, что они не отключили систему коротких имен файлов.

Единственный правильный способ установки на C:\Program Files - пометить MSI как 64-битный и использовать свойство ProgramFiles64Folder вместо свойства ProgramFilesFolder.

Кстати, если ваш начальник не поверит вам, тогда я предлагаю найти нового начальника. Я пишу установщики в течение 16 лет и никогда не позволяю некоторым PHB принимать подобные решения. Я эксперт по установке Windows, а не он.

...