У меня есть ситуация, когда многие пользователи могут отправить «setup.exe» для развертывания на всех наших пользовательских рабочих станциях. Мы используем SCCM для выполнения настроек. Мы хотели бы, чтобы эти setup.exe выполнялись тихо и с протоколированием. Мы не можем ожидать, что пользователи предоставят эту информацию (это требование).
Мои текущие мысли заключаются в том, что если мы сможем выяснить, какой инструмент установки был создан для создания EXE (Install Shield, WISE, WIX и т. Д.), Мы можем сделать разумное предположение о параметрах.
Косвенно через поиск текста внутри setup.exe, например:
strings.exe .\AcrobatProfessional_7.0_EN\setup.exe | select-string "InstallShield"
Если файл Setup.exe был создан «Installshield», то команда abbove, вероятно, найдет такой текст: «Эта установка была создана с помощью БЕТА-ВЕРСИИ InstallShield Developer»
strings.exe .\AcapelaTexttoSpeechClient_8.2.5.3_EN\setup.exe | select-string "inno"
Если файл Setup.exe был создан с помощью Inno Setup, команда abbove, вероятно, найдет такой текст: «Эта установка была создана с помощью Inno Setup».
strings.exe .\AcapelaTexttoSpeechClient_8.2.5.3_EN\setup.exe | select-string "InstallAware"
Если Setup.exe был создан с помощью «Wise Setup», то команда abbove, вероятно, найдет такой текст: «Эта установка была создана с помощью InstallAware: http://www.installaware.com"
параметр -pattern cmdled select-string принимает массив строк, поэтому команда может быть универсальной для всех тестов, таких как: strings.exe '... path to exe' | Select-String -Pattern @ ("InstallAware", "inno", "InstallShield")
strings.exe -> (https://docs.microsoft.com/en-us/sysinternals/downloads/strings)
строка выбора -> (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string?view=powershell-5.1)