![]() |
Некорректное выполнение reg-файлов в Windows 7 x64 и Windows 8 x64
Проблема, собственно, вылезла при внесении в системный реестр данных для обновлений MS Office 2003 из reg-файла. Почему-то нужная ветка, куда обычно прописываются эти обновления, либо не появляется совсем, либо данные вместо неё прописываются в другую ветку.
Должно быть: Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\9140210900063D11C8EF10054038389C\Patches\...] Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW3264node\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\9140210900063D11C8EF10054038389C\Patches\...] |
Цитата:
|
WoW64 (на MSDN).
Если ОС 64-bit, то данные для 64-bit софта заносятся/хранятся в HKLM\SOFTWARE, для 32-bit софта - HKLM\SOFTWARE\WOW3264node. Аналогично и с HKCU. Вы устанавливаете MSO 2003 x86 (32-bit) на ОС 64-bit, REG файл импортируете из-под 32-bit оболочки/приложения? Если да, то все правильно делается, если нет, тогда давайте разбираться, чем вы запускаете импорт REG файла. |
В ОС 64-bit два файла regedit.exe с разной разрядностью (x32 и x64).
Цитата:
|
Iska, boss911, wolkow70
Запуск reg-файла выполняет офис (админ точка) по команде, прописанной в Setup.ini: Код:
[ChainedInstall_1] |
Nun-Nun
Офис какой битности, 64? Что запускает установщик офиса, файл EXE/MSI (запускаете сами, руками из Win проводника или запускает приложение/оболочка, какая)? Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
- при втыкании диска с дистрибом срабатывает autorun.inf и запускает Setup.exe; - запуск Setup.exe через "Пуск"->"Выполнить"; - запуск Setup.exe с админ правами из-под Total Commander-а (x86). |
Цитата:
|
Nun-Nun
И так, вы установили MSO 2003 32-bit: Цитата:
Я что-то не понимаю или запутался. По вашим словам, как я понял, вам надо прописать обновления для MSO 2003 32-bit в ту часть реестра, где хранится информация для 64-bit ПО/ОС, но ведь это не правильно. Цитата:
Цитата:
|
Nun-Nun, проверил установку MSO_2003_x86 на Win7_Ult_x64
В итоге msp-шки, как и положено скрин, прописались в Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\....\Patches\...] Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\...\Patches\...] |
Цитата:
Цитата:
Цитата:
All С учётом сказанного, вопрос остаётся открытым: получается, что для корректного внесения хотфиксовых данных с помощью reg-файла и средств самой ОС в реестр нужно в дистрибе офиса иметь два reg-файла - один для x64, а другой для x32 ? Тогда как в Setup.ini прописать выбор запуска нужного reg-файла? |
Nun-Nun, Одного reg-файла достаточно. Пере направление в WOW3264node выполняется автоматом если импорт reg-файла запускается из под 32-bit приложения.
А если тебе нужно избежать пере направления то на батнике это будет выглядеть так: If Exist %SystemRoot%\SysWOW64 %SystemRoot%\sysnative\regedt32.exe /s c:\WUfix.reg. Сначала определяем что система х64 (%Processor_Architecture% не подойдет потому что он покажет разрядность программы), а после выполняем импорт обратившись через %SystemRoot%\sysnative (доступ в реальный каталог %SystemRoot%\System32 для х86 программ). |
Спасибо, попробую, правда не очень хочется иметь лишние бантики в дистрибе.
|
Цитата:
Ж.Д.А.Л.К.Е.Р., а разве 32-bit приложение может получить доступ к 64-bit? Я о том, если батник будет запущен 32-bit приложением, то сработает CMD.exe 32-bit, а оно в своем случае запустит импорт REG файла через 32-bit regedt.exe/reg.exe. Честно сказать, я ранее не слышал про такой метод: Цитата:
Цитата:
Цитата:
Код:
[ChainedInstall_1] |
boss911, Ты же сам дал ссылку на предыдущей странице, где можно найти следующее:
Цитата:
А в случае когда х32 приложение обращается в %SystemRoot%\System32 система его переводит в %SystemRoot%\SysWOW64 (это как по аналогии в реестре с WOW3264node). |
Цитата:
Цитата:
Nun-Nun, тогда батник или ковыряйте Setup.ini. |
Думаю, что вариант с бантиком, предложенный Ж.Д.А.Л.К.Е.Р., - действительно один из рабочих. Во всяком случае команда
Код:
If Exist %SystemRoot%\SysWOW64 %SystemRoot%\sysnative\regedt32.exe /s c:\WUfix.reg P.S. Господа! Перефразирую известную фразу Мкртчана - "Я Вам один умный мысль скажу, Вы только не обижайтесь!" (к/ф "Мимино"). :) Ведь можно создать установщик с использованием модифицированных модулей 7-Zip от Олега Щербакова. Там разрядность ОС легко определяется средствами самих модулей и, соответственно, не представляет сложности запустить приложение соответствующей разрядности! :boast: |
Nun-Nun, можно, конечно, но мне батники ближе. :)
|
Господа, вы учитывайте, что некоторые 32-битные приложения при установке часть записей могут вносить в 32- разряную часть реестра, а часть в 64-разрядную. И с таким часто приходится сталкиваться.
Цитата:
|
Цитата:
|
|
Iska,
Посмотрел: в примерах приведены коды C++. Как это использовать в bat-нике? |
Nun-Nun, в чем глобальный смысл записей reg в [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\... ? Список обновлений MSO в апплете "Удаление программ"? Заглушки на скачивание определённых обновлений MSO? Или что-то ещё?
|
Цитата:
|
Цитата:
Посмотрите это: Registry Redirector (Windows). |
Цитата:
За ссылку спасибо, посмотрю. |
Время: 08:35. |
Время: 08:35.
© OSzone.net 2001-