Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка приложений (http://forum.oszone.net/forumdisplay.php?f=61)
-   -   Некорректное выполнение reg-файлов в Windows 7 x64 и Windows 8 x64 (http://forum.oszone.net/showthread.php?t=261872)

Nun-Nun 05-06-2013 00:51 2162447

Некорректное выполнение 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\...]
Кто-нибудь знает как решить проблему средствами самой ОС (если конечно такое возможно), а не сторонними программами?

Iska 05-06-2013 04:06 2162471

Цитата:

Цитата Nun-Nun
Кто-нибудь знает как решить проблему средствами самой ОС (если конечно такое возможно), а не сторонними программами? »

Используете импорт reg-файла не из-под Проводника, а из-под стороннего 32-битного приложения?

boss911 05-06-2013 05:40 2162481

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 файла.

wolkow70 05-06-2013 16:20 2162815

В ОС 64-bit два файла regedit.exe с разной разрядностью (x32 и x64).
Цитата:

Цитата Nun-Nun
а получается:
Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW3264node\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\ »

Вы здесь явно 32-битный regedit.exe запускаете.

Nun-Nun 05-06-2013 23:25 2163003

Iska, boss911, wolkow70

Запуск reg-файла выполняет офис (админ точка) по команде, прописанной в Setup.ini:
Код:

[ChainedInstall_1]
TaskName=Add Updatesinfo to registry
TASKTYPE=exe
PATH=REG.exe
CmdLine=IMPORT Updates.reg

Результаты установки имеют и ещё одну особенность: если обновления запускаются как описано выше, т.е. с помощью reg-файла, то среди установленного софта в "Программы и компоненты" их не видно (что вполне понятно, т.к. в нужную ветку реестра они не попали), а если запускаю обновления живьём, т.е. exe-шниками - все, как и положено появляется и в "Программы и компоненты".

boss911 06-06-2013 02:17 2163046

Nun-Nun

Офис какой битности, 64? Что запускает установщик офиса, файл EXE/MSI (запускаете сами, руками из Win проводника или запускает приложение/оболочка, какая)?

Цитата:

Цитата Nun-Nun
если обновления запускаются как описано выше, т.е. с помощью reg-файла »

Это как? Интересно узнать, как вы обновления запускаете/ставите при помощи REG файла. Может INI файла?

Nun-Nun 06-06-2013 12:36 2163224

Цитата:

Цитата boss911
Это как? Интересно узнать, как вы обновления запускаете/ставите при помощи REG файла. Может INI файла? »

Сорри, чушь написал! Имелось в виду - инфа об установленных обновлениях вносится в реестр с помощью reg-файла.
Цитата:

Цитата boss911
Офис какой битности, 64?

x32
Цитата:

Цитата boss911
Что запускает установщик офиса, файл EXE/MSI...

Setup.exe
Цитата:

Цитата boss911
запускаете сами, руками из Win проводника или запускает приложение/оболочка, какая?

Испробованы три варианта, но результат один и тот же:
- при втыкании диска с дистрибом срабатывает autorun.inf и запускает Setup.exe;
- запуск Setup.exe через "Пуск"->"Выполнить";
- запуск Setup.exe с админ правами из-под Total Commander-а (x86).

wolkow70 06-06-2013 13:04 2163236

Цитата:

Цитата Nun-Nun
а если запускаю обновления живьём, т.е. exe-шниками - все, как и положено »

Потому, что инсталляторы самостоятельно определяют разрядность системы и отключают ре-директ при выполнении команд на 64-битной Оси.

boss911 06-06-2013 16:19 2163361

Nun-Nun

И так, вы установили MSO 2003 32-bit:
Цитата:

Цитата Nun-Nun
при втыкании диска с дистрибом срабатывает 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 ПО/ОС, но ведь это не правильно.

Цитата:

Цитата Nun-Nun
если обновления запускаются как описано выше, т.е. с помощью reg-файла, то среди установленного софта в "Программы и компоненты" их не видно »

Не понятно. А офис вы там видите?
Цитата:

Цитата Nun-Nun
а если запускаю обновления живьём, т.е. exe-шниками - все, как и положено »

Это точно 32-bit обновления? И, что, инфу пишет (32-bit обновление) в "HKLM\SOFTWARE\Microsoft..."?

sov44 06-06-2013 18:16 2163418

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\...]
только одно обновление совместимости MSO_2010 KB2553065 скрин.

Nun-Nun 06-06-2013 22:01 2163491

Цитата:

Цитата boss911
Ваши настройки (необходимые ключи, о якобы установленных обновлениях) из 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 сталкивался всего несколько раз, отсюда и непонятки.
Цитата:

Цитата boss911
Не понятно. А офис вы там видите? »

Вижу.
Цитата:

Цитата boss911
Это точно 32-bit обновления? И, что, инфу пишет (32-bit обновление) в "HKLM\SOFTWARE\Microsoft..."?»

32 - точно, а что касается "HKLM\SOFTWARE\Microsoft...", то наоборот (моя ошибка, см. пояснение в этом посте выше).

All

С учётом сказанного, вопрос остаётся открытым: получается, что для корректного внесения хотфиксовых данных с помощью reg-файла и средств самой ОС в реестр нужно в дистрибе офиса иметь два reg-файла - один для x64, а другой для x32 ? Тогда как в Setup.ini прописать выбор запуска нужного reg-файла?

Ж.Д.А.Л.К.Е.Р. 07-06-2013 00:31 2163544

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 программ).

Nun-Nun 07-06-2013 01:38 2163552

Спасибо, попробую, правда не очень хочется иметь лишние бантики в дистрибе.

boss911 07-06-2013 02:17 2163555

Цитата:

Цитата sov44
В итоге 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?



Цитата:

Цитата Nun-Nun
Я-то по чайниковости думал об этом наоборот »

А я для кого это писал?

Цитата:

Цитата Nun-Nun
не очень хочется иметь лишние бантики в дистрибе. »

Иначе не как, так как 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 2163556

boss911, Ты же сам дал ссылку на предыдущей странице, где можно найти следующее:
Цитата:

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).

boss911 07-06-2013 05:00 2163565

Цитата:

Цитата Ж.Д.А.Л.К.Е.Р.
Ты же сам дал ссылку на предыдущей странице »

Дать-то я дал, но с английским я не дружу. Знать бы мне про "sysnative" пару-тройку лет тому назад (и никто тогда не подсказал), я бы решил проблему с доступом 32-bit приложениями к 64-bit более красивей и проще. Спасибо.
Цитата:

Цитата Ж.Д.А.Л.К.Е.Р.
А в случае... »

Это мне уже давно известно, немало я тогда шишек набил, пока не докопался.

Nun-Nun, тогда батник или ковыряйте Setup.ini.

Nun-Nun 08-06-2013 00:19 2164183

Думаю, что вариант с бантиком, предложенный Ж.Д.А.Л.К.Е.Р., - действительно один из рабочих. Во всяком случае команда
Код:

If Exist %SystemRoot%\SysWOW64 %SystemRoot%\sysnative\regedt32.exe /s c:\WUfix.reg
должна нормально работать на любой ОС (и на x32 и на x64).

P.S. Господа! Перефразирую известную фразу Мкртчана - "Я Вам один умный мысль скажу, Вы только не обижайтесь!" (к/ф "Мимино"). :) Ведь можно создать установщик с использованием модифицированных модулей 7-Zip от Олега Щербакова. Там разрядность ОС легко определяется средствами самих модулей и, соответственно, не представляет сложности запустить приложение соответствующей разрядности! :boast:

boss911 08-06-2013 02:01 2164202

Nun-Nun, можно, конечно, но мне батники ближе. :)

wolkow70 09-06-2013 07:27 2164705

Господа, вы учитывайте, что некоторые 32-битные приложения при установке часть записей могут вносить в 32- разряную часть реестра, а часть в 64-разрядную. И с таким часто приходится сталкиваться.
Цитата:

Цитата Nun-Nun
Там разрядность ОС легко определяется средствами самих модулей »

Этого не достаточно. Определиться то оно определится, но в команде все равно должно быть указано отключение перенаправления в WOW64, если это требуется.

Nun-Nun 10-06-2013 12:06 2165269

Цитата:

Цитата wolkow70
но в команде все равно должно быть указано отключение перенаправления в WOW64, если это требуется. »

Что закоманда должна быть и как должна выглядеть? Какой-нибудь пример приведите, пожалуйста.

Iska 10-06-2013 13:40 2165301

Wow64DisableWow64FsRedirection function (Windows)

Nun-Nun 10-06-2013 13:54 2165306

Iska,

Посмотрел: в примерах приведены коды C++. Как это использовать в bat-нике?

sov44 10-06-2013 14:11 2165315

Nun-Nun, в чем глобальный смысл записей reg в [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\... ? Список обновлений MSO в апплете "Удаление программ"? Заглушки на скачивание определённых обновлений MSO? Или что-то ещё?

Nun-Nun 10-06-2013 15:22 2165346

Цитата:

Цитата sov44
в чем глобальный смысл записей reg в [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\... ? Список обновлений MSO в апплете "Удаление программ"? Заглушки на скачивание определённых обновлений MSO? Или что-то ещё? »

Да вроде я уже пояснял суть проблемы. Хотфиксы интегрированы в дистриб MSO 2003 x86 (админ точка). Дистриб создан для универсализации установки под разные ОС (XP (x86), Win 7 (x86), Win 7 (x64), Win 8 (x86), Win 8 (x64)). Если MSO 2003 (x86) из этого дистриба устанавливается на Win 7 x64, то после этого среди списка установленных в систему хотфиксов не появляются те хотфиксы, что интегрированы в дистриб. Вызвано это тем, что под ОС (x64) reg-файл, из которого информация о хотфиксах добавляется в реестр, не работает так, как это происходит под XP (x86). Если же хотфиксы на Win 7 (x64) устанавливаются живьём, т.е. запуском отдельных exe-шников, а не ставятся из дистриба MSO 2003 (x86), то они в списке хотфиксов, установленных в систему, видны. Отсюда и весь сыр-бор: чтобы доработать дистриб MSO 2003 (x86), нужно решить проблему reg-файла и заставить его корректно работать, т.е. чтобы после его работы данные о хотфиксах, интегрированных в MSO 2003 (x86), становились видны в списке установленных в систему обновлений. Ну не делать же для ОС каждой разрядности отдельный дистриб MSO 2003 !!!

Iska 10-06-2013 15:25 2165350

Цитата:

Цитата Nun-Nun
те хотфиксы, что интегрированы в дистриб. »

Nun-Nun, как интегрировали?

Посмотрите это: Registry Redirector (Windows).

Nun-Nun 10-06-2013 16:25 2165379

Цитата:

Цитата Iska
как интегрировали? »

Как описано в статье Office 2003 - метод точки административной установки.

За ссылку спасибо, посмотрю.


Время: 08:35.

Время: 08:35.
© OSzone.net 2001-