Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 7
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


Гуру, помогите разделить архитектуры x86 и AMD64 с модифицированным модулем.

Моя задача: выполнять батник с учётом различий в архитектуре, т.к. батник использует, например, dism.exe, который, будучи запущенный в 32-битной консоли на 64-битной системе, отказывается работать.

Батник содержит строку DISM.exe /online /cleanup-image /spsuperseded /hidesp

Конфиг config.txt:

;!@Install@!UTF-8:x86!
Title="Kindred server system disk cleanup tool 2.0"
RunProgram="cleanup2.cmd"
;!@InstallEnd@:x86!

;!@Install@!UTF-8:x64!
Title="Kindred server system disk cleanup tool 2.0"
RunProgram="cleanup2.cmd"
;!@InstallEnd@:x64!

Проблема в том, что вне зависимости от указания платформенных секций, батник выполняется в среде архитектуры, которая использовалась для разархивирования. Если использовался модуль разархивации 32-битный (copy /b 7zsd_lzma.sfx+config.txt+cleanup2.7z cleanup2.exe), то и батник выполняется в 32-битной командной консоли, если модуль разархивации 64-битный (copy /b 7zsd_lzma_x64.sfx+config.txt+cleanup2.7z cleanup2.exe), то батник выполняется в 64-битной консоли, что ОК на 64-битных системах, но при этом на 32-битных системах экзешник не запускается вообще. Если же при сборке затолкать модули разархивации как для 32-битных так и для 64-битных систем, то получившийся SFX просто использует первый затолканный модуль и я опять сталкиваюсь с тем, что мой скрипт выполняется либо на всех ОС, но в 32-битной консоли, либо в 64-битной консоли на 64-битных системах, а на 32-битных не запускается вообще.

Кто виноват и что делать? Как сделать так, чтобы командная консоль соответствовала битности архитектуры, на которой запустился SFX?

Отправлено: 16:57, 03-07-2014 | #1516