Показать полную графическую версию : Некорректное выполнение 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\...]
Кто-нибудь знает как решить проблему средствами самой ОС (если конечно такое возможно), а не сторонними программами?
Кто-нибудь знает как решить проблему средствами самой ОС (если конечно такое возможно), а не сторонними программами? »
Используете импорт reg-файла не из-под Проводника, а из-под стороннего 32-битного приложения?
WoW64 (http://en.wikipedia.org/wiki/WoW64) (на MSDN (http://blogs.msdn.com/b/craigmcmurtry/archive/2004/12/14/301155.aspx)).
Если ОС 64-bit, то данные для 64-bit софта заносятся/хранятся в HKLM\SOFTWARE, для 32-bit софта - HKLM\SOFTWARE\WOW3264node. Аналогично и с HKCU.
Вы устанавливаете MSO 2003 x86 (32-bit) на ОС 64-bit, REG файл импортируете из-под 32-bit оболочки/приложения? Если да, то все правильно делается, если нет, тогда давайте разбираться, чем вы запускаете импорт REG файла.
wolkow70
05-06-2013, 16:20
В ОС 64-bit два файла regedit.exe с разной разрядностью (x32 и x64).
а получается:
Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW3264node\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\ »
Вы здесь явно 32-битный regedit.exe запускаете.
Iska, boss911, wolkow70
Запуск reg-файла выполняет офис (админ точка) по команде, прописанной в Setup.ini:
[ChainedInstall_1]
TaskName=Add Updatesinfo to registry
TASKTYPE=exe
PATH=REG.exe
CmdLine=IMPORT Updates.reg
Результаты установки имеют и ещё одну особенность: если обновления запускаются как описано выше, т.е. с помощью reg-файла, то среди установленного софта в "Программы и компоненты" их не видно (что вполне понятно, т.к. в нужную ветку реестра они не попали), а если запускаю обновления живьём, т.е. exe-шниками - все, как и положено появляется и в "Программы и компоненты".
Nun-Nun
Офис какой битности, 64? Что запускает установщик офиса, файл EXE/MSI (запускаете сами, руками из Win проводника или запускает приложение/оболочка, какая)?
если обновления запускаются как описано выше, т.е. с помощью reg-файла »
Это как? Интересно узнать, как вы обновления запускаете/ставите при помощи REG файла. Может INI файла?
Это как? Интересно узнать, как вы обновления запускаете/ставите при помощи REG файла. Может INI файла? »
Сорри, чушь написал! Имелось в виду - инфа об установленных обновлениях вносится в реестр с помощью reg-файла.
Офис какой битности, 64?
x32
Что запускает установщик офиса, файл EXE/MSI...
Setup.exe
запускаете сами, руками из Win проводника или запускает приложение/оболочка, какая?
Испробованы три варианта, но результат один и тот же:
- при втыкании диска с дистрибом срабатывает autorun.inf и запускает Setup.exe;
- запуск Setup.exe через "Пуск"->"Выполнить";
- запуск Setup.exe с админ правами из-под Total Commander-а (x86).
wolkow70
06-06-2013, 13:04
а если запускаю обновления живьём, т.е. exe-шниками - все, как и положено »
Потому, что инсталляторы самостоятельно определяют разрядность системы и отключают ре-директ при выполнении команд на 64-битной Оси.
Nun-Nun
И так, вы установили MSO 2003 32-bit:
при втыкании диска с дистрибом срабатывает autorun.inf и запускает Setup.exe »
Ваши настройки (необходимые ключи, о якобы установленных обновлениях) из REG файла, который импортировал Setup.exe->Setup.ini через REG.exe, пошли в "HKLM\SOFTWARE\WOW3264node\Microsoft\..."? Если да, то так и должно быть. Офис 32-bit, соответственно обновления тоже должны быть 32-bit, а все, что 32-bit на OC 64-bit идет в "WOW3264node", так положено (насколько мне известно).
Я что-то не понимаю или запутался. По вашим словам, как я понял, вам надо прописать обновления для MSO 2003 32-bit в ту часть реестра, где хранится информация для 64-bit ПО/ОС, но ведь это не правильно.
если обновления запускаются как описано выше, т.е. с помощью reg-файла, то среди установленного софта в "Программы и компоненты" их не видно »
Не понятно. А офис вы там видите?
а если запускаю обновления живьём, т.е. exe-шниками - все, как и положено »
Это точно 32-bit обновления? И, что, инфу пишет (32-bit обновление) в "HKLM\SOFTWARE\Microsoft..."?
Nun-Nun, проверил установку MSO_2003_x86 на Win7_Ult_x64
В итоге msp-шки, как и положено скрин (http://savepic.org/3547914.jpg), прописались в [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\...] только одно обновление совместимости MSO_2010 KB2553065 скрин (http://savepic.org/3583757.jpg).
Ваши настройки (необходимые ключи, о якобы установленных обновлениях) из REG файла, который импортировал Setup.exe->Setup.ini через REG.exe, пошли в "HKLM\SOFTWARE\WOW3264node\Microsoft\..."? Если да, то так и должно быть. Офис 32-bit, соответственно обновления тоже должны быть 32-bit, а все, что 32-bit на OC 64-bit идет в "WOW3264node", так положено (насколько мне известно).
Я что-то не понимаю или запутался. По вашим словам, как я понял, вам надо прописать обновления для MSO 2003 32-bit в ту часть реестра, где хранится информация для 64-bit ПО/ОС, но ведь это не правильно.»
А, так вот в чём дело! Я-то по чайниковости думал об этом наоборот, что ветка с ...\WOW3264node\... - это для 64-bit, а ветка без неё - для 32. :) :sorry: Ну что ж, буду знать! Спасибо за подсказку. Сижу на XP, а с 7 и 8 сталкивался всего несколько раз, отсюда и непонятки.
Не понятно. А офис вы там видите? »
Вижу.
Это точно 32-bit обновления? И, что, инфу пишет (32-bit обновление) в "HKLM\SOFTWARE\Microsoft..."?»
32 - точно, а что касается "HKLM\SOFTWARE\Microsoft...", то наоборот (моя ошибка, см. пояснение в этом посте выше).
All
С учётом сказанного, вопрос остаётся открытым: получается, что для корректного внесения хотфиксовых данных с помощью reg-файла и средств самой ОС в реестр нужно в дистрибе офиса иметь два reg-файла - один для x64, а другой для x32 ? Тогда как в Setup.ini прописать выбор запуска нужного reg-файла?
Ж.Д.А.Л.К.Е.Р.
07-06-2013, 00:31
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 программ).
Спасибо, попробую, правда не очень хочется иметь лишние бантики в дистрибе.
В итоге msp-шки, как и положено скрин, прописались в »
Странно, тогда я не понимаю MS, либо я чего-то не знаю.
Ж.Д.А.Л.К.Е.Р., а разве 32-bit приложение может получить доступ к 64-bit? Я о том, если батник будет запущен 32-bit приложением, то сработает CMD.exe 32-bit, а оно в своем случае запустит импорт REG файла через 32-bit regedt.exe/reg.exe. Честно сказать, я ранее не слышал про такой метод:
выполняем импорт обратившись через %SystemRoot%\sysnative (доступ в реальный каталог %SystemRoot%\System32 для х86 программ). »
То есть, запуская regedt32.exe 32-bit приложением, оно перенаправит к 64-bit версии regedt.exe?
[hr]
Я-то по чайниковости думал об этом наоборот »
А я для кого это (http://forum.oszone.net/post-2162481-3.html) писал?
не очень хочется иметь лишние бантики в дистрибе. »
Иначе не как, так как Setup.exe->Setup.ini 32-bit, это значит, что он будет работать напрямую только с 32-bit приложениями, что в следствии ведет к перенаправлению в "WOW3264node". А нечто подобное:
[ChainedInstall_1]
TaskName=Add Updatesinfo to registry
TASKTYPE=exe
PATH=REG.exe
PATH2=%SystemRoot%\sysnative\REG32.exe
CmdLine=IMPORT Updates.reg
CmdLine2=IMPORT Updates.reg
нельзя с Setup.ini проделать, указать два и более запуска? Или может вторую секцию [ChainedInstall_2] ? Остается еще вопрос, не будет ли оно ругаться на недоступность REG32.exe в ОС 32-bit. Поэкспериментируйте, узнайте, что может/умеет Setup.ini.
Ж.Д.А.Л.К.Е.Р.
07-06-2013, 02:32
boss911, Ты же сам дал ссылку (http://en.wikipedia.org/wiki/WoW64) на предыдущей странице, где можно найти следующее:
32-bit applications can access %SystemRoot%\System32 through the pseudo directory %SystemRoot%\sysnative.По русски это - х32 приложение может получить доступ к х64 файлам что физически находятся в %SystemRoot%\System32, обращаясь к ним через %SystemRoot%\sysnative.
А в случае когда х32 приложение обращается в %SystemRoot%\System32 система его переводит в %SystemRoot%\SysWOW64 (это как по аналогии в реестре с WOW3264node).
Ты же сам дал ссылку на предыдущей странице »
Дать-то я дал, но с английским я не дружу. Знать бы мне про "sysnative" пару-тройку лет тому назад (и никто тогда не подсказал), я бы решил проблему с доступом 32-bit приложениями к 64-bit более красивей и проще. Спасибо.
А в случае... »
Это мне уже давно известно, немало я тогда шишек набил, пока не докопался.
Nun-Nun, тогда батник или ковыряйте Setup.ini.
Думаю, что вариант с бантиком, предложенный Ж.Д.А.Л.К.Е.Р., - действительно один из рабочих. Во всяком случае команда
If Exist %SystemRoot%\SysWOW64 %SystemRoot%\sysnative\regedt32.exe /s c:\WUfix.reg
должна нормально работать на любой ОС (и на x32 и на x64).
P.S. Господа! Перефразирую известную фразу Мкртчана - "Я Вам один умный мысль скажу, Вы только не обижайтесь!" (к/ф "Мимино"). :) Ведь можно создать установщик с использованием модифицированных модулей 7-Zip от Олега Щербакова. Там разрядность ОС легко определяется средствами самих модулей и, соответственно, не представляет сложности запустить приложение соответствующей разрядности! :boast:
Nun-Nun, можно, конечно, но мне батники ближе. :)
wolkow70
09-06-2013, 07:27
Господа, вы учитывайте, что некоторые 32-битные приложения при установке часть записей могут вносить в 32- разряную часть реестра, а часть в 64-разрядную. И с таким часто приходится сталкиваться.
Там разрядность ОС легко определяется средствами самих модулей »
Этого не достаточно. Определиться то оно определится, но в команде все равно должно быть указано отключение перенаправления в WOW64, если это требуется.
но в команде все равно должно быть указано отключение перенаправления в WOW64, если это требуется. »
Что закоманда должна быть и как должна выглядеть? Какой-нибудь пример приведите, пожалуйста.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.