1 (изменено: Rumata, 2016-11-26 19:15:16)

Тема: Распаковка (не инсталляция) MSI файлов

Люди пишут (например, https://www.raymond.cc/blog/how-to-view … -msi-file/), что MSI-файлы (Windows Installer) можно распаковать без инсталляции пакета следующей командой


msiexec /a ИМЯФАЙЛА.msi /qb TARGETDIR=ПОЛНЫЙ-ПУТЬ-ДЛЯ-РАСПАКОВКИ

При этом msiexec /? сообщает

/a <Product.msi>
Administrative install - Installs a product on the network

Проверьте, пожалуйста, у себя под обычным пользователем (без административных прав) эта опция требует наличия повышенных привелегий или нет? Наверняка, у вас есть какой-нибудь MSI-файл в архивах.

( 2 * b ) || ! ( 2 * b )

2

Re: Распаковка (не инсталляция) MSI файлов

У меня на Win 7 и W2K8 R2 под обычным пользователем распаковало без всяких запросов. Появлялось только окно msiexec с progress bar-ом.

3

Re: Распаковка (не инсталляция) MSI файлов

Spy00000

Спасибо.

Появление окна управляется опциями:

/quiet
Quiet mode, no user interaction
. . .
/q[n|b|r|f]
Sets user interface level
n - No UI

( 2 * b ) || ! ( 2 * b )

4

Re: Распаковка (не инсталляция) MSI файлов

Windows XP: извлекается при запуске от ограниченного пользователя, но при этом наряду с процессом MSIEXEC, запущенном пользователем, запускается от имени SYSTEM и остаётся работать процесс MSIEXEC с ключом /V (служба «Установщик Windows», остановленная у меня по умолчанию).

5 (изменено: Rumata, 2016-11-28 13:53:45)

Re: Распаковка (не инсталляция) MSI файлов

wisgest
Спасибо. Скажите, пожалуйста, что происходит при повторном запуске msiexec? Появляется ли дубликат процесса?

Проверил у себя:
После запуска команды сервис, называемый msiserver (Windows Installer) переходит из режима Stopped в Running. Дубликатов нет.

( 2 * b ) || ! ( 2 * b )

6

Re: Распаковка (не инсталляция) MSI файлов

Rumata пишет:

После запуска команды сервис, называемый msiserver (Windows Installer) переходит из режима Stopped в Running.

О нём и речь:

reg query HKLM\SYSTEM\CurrentControlSet\Services\MSIServer

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSIServer
    Description REG_SZ Позволяет добавлять, изменять или удалять приложения, предоставленные пакетом установщика Windows (*.msi). Если эта служба отключена, любые службы, которые явно зависят от нее, не могут быть запущены.
    Type REG_DWORD 0x20
    Start REG_DWORD 0x3
    ErrorControl REG_DWORD 0x1
    ImagePath REG_EXPAND_SZ C:\WINDOWS\system32\msiexec.exe /V
    DisplayName REG_SZ Установщик Windows
    DependOnService REG_MULTI_SZ RpcSs\0\0
    DependOnGroup REG_MULTI_SZ \0
    ObjectName REG_SZ LocalSystem

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSIServer\Security

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSIServer\Enum

Rumata пишет:

что происходит при повторном запуске msiexec?

Если служба «Установщик Windows» уже запущена (например, при первом вызове msiexec), то, как и следовало ожидать, всё остаётся по-прежнему: служба продолжает работать без создания дополнительных процессов, процесс, созданный пользователем, завершается после извлечения файлов.

7 (изменено: wisgest, 2016-12-01 06:36:20)

Re: Распаковка (не инсталляция) MSI файлов

Не уверен, что действие всегда сводится к извлечению файлов…

TCC/LE — вполне переносимое приложение (для полной переносимости надо создать файл TCMD.INI в каталоге программы) и, как я понимаю, достаточно пачкающий в системе установщик нужен лишь для автоматизации обновлений. Но можно просто извлечь файлы запустив установщик tccle.exe с ключом /extract:

+ tccle Options

---------------------------
tccle Options
---------------------------
Command Line:
tccle [options]
options:
  /? or /help - displays this message
  /extract:<directory> - extracts all files in <directory>
  /listlangs - list languages supported by this setup
  /exenoui - launches the EXE setup without UI
  /exebasicui - launches the EXE setup with basic UI
  /exelang <langId> - launches the EXE setup using the specified language
  /username - username used by the proxy
  /password - password used by the proxy
  /exelog<path_to_log_file> - creates a log file at specified path
  /exenoupdates - does not check for a newer version
  <msiOptions> - options for msiexec.exe on running the MSI package
---------------------------
ОК   
---------------------------

— каталог должен существовать, иначе файлы будут извлечены в каталог с установщиком, при этом путь должен быть полным, иначе, скорее всего, возникнет ошибка; извлечение производится не непосредственно в указанный каталог, а в создаваемый в нём подкаталог с бессмысленным именем.

Из извлечённых файлов можно удалить tccle.msi, tccle.aiui — они используются установщиком, updater.exe, ненужные языковые *.dll.

Но пока не будем удалять tccle.msi, а примененим к нему обсуждаемую в этой теме команду:
1)

ESET Smart Security пишет:

Приложение, запущенное на локальном компьютере, пытается установить связь с удаленным компьютером. Разрешить?
Приложение: Windows® installer
Источник: Microsoft Windows Component Publisher
Удаленный компьютер: crl.comodoca.com (178.255.83.2)
Удаленный порт: TCP 80 (http)

2) в TARGETDIR копируются ранее извлечённые, находящиеся рядом с tccle.msi файлы кроме tccle.aiui (т.е. если какой-нибудь из них предварительно удалить, то возникает сообщение вида

---------------------------
TCC LE 14.0
---------------------------
Source file not found: D:\test\EB23922\tcmd.chm.  Verify that the file exists and that you can access it.
---------------------------
Отмена   Повтор   Игнорировать   
---------------------------

), а также создаётся новый tccle.msi немного другого размера…