|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » SFX Creator 4 Alpha - создаём SFX архивы |
|
SFX Creator 4 Alpha - создаём SFX архивы
|
Ленивый кусок мяса Сообщения: 1986 |
Профиль | Сайт | Отправить PM | Цитировать
SFX Creator 4 Alpha Обновление с любых прошлых версий не поддерживается! Производите чистую установкуОфициальный сайт: http://kav-soft.ru/ Прочтите, перед тем как писать в эту тему
Если у вас возникли сложности при работе с SFX Creator, то пожалуйста, будьте добры, убедитесь, что вы проделали всё нижеописанное: 1. В главном окне программы нажмите на кнопку с красным значком вопроса и ознакомьтесь с файлом справки 2. Убедитесь, что используете последнюю версию SFX Creator 3. Не обсуждается работа ранних версий SFX Creator Если у вас по прежнему возникают сложности - пишите в эту тему О программе Программа SFX Creator предназначена для создания SFX архивов, а также программа может быть использована для создания простых пакетов инсталляций с графическим интерфейсом и выбором устанавливаемых компонентов. Основные возможности программы Загрузка:
|
|
------- Отправлено: 03:13, 29-09-2009 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата MKN:
Option Explicit Const msiOpenDatabaseModeReadOnly = 0 Dim strPath2MSIFile Dim strProductCode strPath2MSIFile = "C:\Program Files\Windows Installer 4.5 SDK\TOOLS\orca.msi" With WScript.CreateObject("WindowsInstaller.Installer") With .OpenDatabase(strPath2MSIFile, msiOpenDatabaseModeReadOnly) With .OpenView("SELECT * FROM Property WHERE Property = 'ProductCode'") .Execute() With .Fetch() strProductCode = .StringData(2) WScript.Echo strProductCode End With End With End With End With WScript.Quit 0 |
|
Последний раз редактировалось Iska, 25-05-2011 в 18:56. Отправлено: 18:47, 25-05-2011 | #141 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата MKN:
Цитата MKN:
|
||
------- Отправлено: 00:45, 26-05-2011 | #142 |
Ветеран Сообщения: 2359
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Чтобы не прописывать ничего в самом скрипте (иначе какая уж тут автоматизация...) |
|
Отправлено: 10:05, 26-05-2011 | #143 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Iska:
|
|
------- Отправлено: 10:26, 26-05-2011 | #144 |
Ветеран Сообщения: 2359
|
Профиль | Отправить PM | Цитировать Вот такой скрипт нашёл (экспортирует всё из Property в xls файл ... Но наверное какую то малость можно подправить для ProductCode :
' Export File Table from a given MSI Database to an Excel Spreadsheet Option Explicit Const msiOpenDatabaseModeReadOnly = 0 On Error Resume Next Dim installer : Set installer = Nothing Dim szMSI szMSI = InputBox("Enter MSI File (including full path)", "Select MSI", "") DIM folder : folder = InputBox("Enter Folder to Write Table to...", "Select Export Folder","") Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError Dim database : Set database = installer.OpenDatabase(szMSI, msiOpenDatabaseModeReadOnly) : CheckError Dim table, view, record table = "Property" Set view = database.OpenView("SELECT 'Name' FROM _Tables") view.Execute : CheckError Do Set record = view.Fetch : CheckError If record Is Nothing Then Exit Do Export table, folder : CheckError Loop Set view = Nothing Export table, folder : CheckError Wscript.Quit(0) Sub Export(table, folder) Dim file :file = table & ".xls" database.Export table, folder, file End Sub Sub CheckError Dim message, errRec If Err = 0 Then Exit Sub message = Err.Source & " " & Hex(Err) & ": " & Err.Description If Not installer Is Nothing Then Set errRec = installer.LastErrorRecord If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText End If Wscript.Echo message Wscript.Quit 2 End Sub |
Отправлено: 18:16, 26-05-2011 | #145 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Лирическое отступление.
Цитата MKN:
Option Explicit Const msiOpenDatabaseModeReadOnly = 0 Dim objFSO Dim objFile Dim strProductCode Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") For Each objFile In objFSO.GetFolder(objFSO.GetParentFolderName(WScript.ScriptFullName)).Files If UCase(objFSO.GetExtensionName(objFile.Name)) = UCase("msi") Then With WScript.CreateObject("WindowsInstaller.Installer") With .OpenDatabase(objFile.Path, msiOpenDatabaseModeReadOnly) With .OpenView("SELECT * FROM Property WHERE Property = 'ProductCode'") .Execute() With .Fetch() strProductCode = .StringData(2) WScript.Echo strProductCode End With End With End With End With End If Next WScript.Quit 0 Цитата K.A.V.:
2. Прямой вывод в текстовый файл из скрипта. Вопрос — в какой именно: где задать его имя, где он будет находиться. |
||
Отправлено: 19:53, 26-05-2011 | #146 |
Ветеран Сообщения: 2359
|
Профиль | Отправить PM | Цитировать Iska,
Задача (в моём понимании) на данном частном отрезке "проекта SFX Creator" такова : получить (экспортировать) из msi файла его ProductCode (и ещё ProductName), которые будут использоваться (записаны) в коде NSIS скрипта. Экспорт произвести в обыкновенный одноимённый txt файл. Например, в ProductCode.txt и ProductName.txt О местонахождении : думаю, что лучшее местонахождение в процессе подготовки и работы, и msi файлов и результирующих файлов ProductCode.txt и ProductName.txt - это $TEMP. Но это для проекта. Для работы же, предложенного тобой vbs скрипта, местонахождение и исходного *.msi и результирующего txt файлов - рядом со скриптом vbs. PS DrWEB c ума сходит от этого скрипта и не даёт сохранять... Что делать ? |
Последний раз редактировалось MKN, 27-05-2011 в 12:02. Отправлено: 09:18, 27-05-2011 | #147 |
Ветеран Сообщения: 2359
|
Профиль | Отправить PM | Цитировать Если рассматривать эту часть проекта , как отдельную утилиту формирования NSIS кода для MSI установки, то происходить будет следующее :
Но сначала ещё немного лирики. На кой нам получать ещё и ProductName ? А на той, чтобы видеть над прогрессом установки не бестолковое мельтешение устанавливаемых файлов (или отсутствие оного), что обычно и наблюдаем по умолчанию, а видеть то, что конретно в данный момент устанавливается. Полученный ProductName и будем использовать в DetailPrint "Installing.... Следующий момент. Если с установкой одного msi пакета всё более-менее ясно, то как быть когда их придётся устанавливать несколько ? Вот конкретный пример, когда я пересобирал отдельное приложение из гигантского пакета Adobe Creative Suite CS5 , для которого пришлось устанавливать аж 8 разных msi пакетов ! (Хотя по сути это были, расчленённые на отдельные дистрибутивы, составляющие их разных VC++... Но разрабам же виднее...) Как быть с такими случаями в нашем случае ? Я бы предусмотрел в скрипте выбор для разных вариаций msi пакетов. Например, для начала пусть присутствуют 9 чекбоксов для выбора. Тут есть нюансы, но про это позже... Пакеты эти, надо предварительно подготовить, создав (для моего примера) 8 папок с именами 1...8, и в каждую из которых, поместить нужные msi дистпибутивы. Т.е. , что получается : Запускаем скомпилированный скрипт. Отмечаем нужные для установки msi пакеты (msi1...msi8) Отмеченные папки 1...8 с содержимым копируются в $TEMP. В каждую папку копируется файл vbs скрипта (чтобы не было путаницы). Vbs скрипт начинает свою работу, создав в каждой папке ProductCode.txt и ProductName.txt. Данные из ProductCode.txt и ProductName.txt заносятся в соответствующие переменные и записываются в код нового созданного файла msi.nsi. Где он будет создан, не критично. К примеру, в C:/myMSInsi В этот файл msi.nsi записывается (пример на основе кода из справочника, наверное можно и иначе) : !define MSIGETPRODUCTINFO '!insertmacro MsiGetProductInfo' Var MSI_PRODUCT !macro MsiGetProductInfo PRODUCTCODE PROPERTY и т.д. Section 1 SetOverwrite on ${MSIGETPRODUCTINFO} "{переменная для кода продукта 1 msi пакета)}" "ProductName" и т.д. SectionEnd Ну и в конце "подчищаем" за собой, удаляя не нужное. Готовый код из файла msi.nsi используем для дальнейшей работы. Моё сочинение наверняка спорно, потому прошу принять участие в "доводке" и совершенствовании... |
Последний раз редактировалось MKN, 27-05-2011 в 10:53. Отправлено: 10:47, 27-05-2011 | #148 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать MKN, а почему бы всю работу не поручить "бейсику" скрипту vbs - пущай код возврата (установлен - не установлен по коду продукта и пути) пишет в файлик, далее код возврата анализирует код NSIS. Есть мысль по этому поводу - сделать плагин к NSIS на досуге.
Примерно так: 1. Исполняемый файл *.exe который заводится препроцессором NSIS и этот файл *.exe (vbs скрипт) заинклудит массив номерков в код NSIS на этапе компиляции проекта 2. Далее плагин на этапе инсталяции обрабатывает массив номерков возвращает код возврата NSIS 3. Код NSIS анализирует полученные данные от плагина. |
------- Последний раз редактировалось kotkovets, 27-05-2011 в 13:40. Отправлено: 13:24, 27-05-2011 | #149 |
Ветеран Сообщения: 2359
|
Профиль | Отправить PM | Цитировать Цитата kotkovets:
Пользователь не должен страдать из-за этого. Если конечно Iska чего нибудь в скрипте не подправит... И возможно придётся сконвертить vbs в exe. Скрипт должен без проблем автономно запускаться на машинах пользователей, у которых есть проблемы либо с скриптоассоциациями , либо чего то скриптовое не установлено или повреждено. Сплошь и рядом встречаю машины, где не возможно так просто запустить файлы VBS... |
|
Последний раз редактировалось MKN, 27-05-2011 в 15:57. Отправлено: 15:35, 27-05-2011 | #150 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Архиваторы - [addon] 7z SFX tools stable/7z SFX tools beta | greg_b | Наборы обновлений для Windows XP/2003/Windows 7 | 173 | 14-09-2012 19:30 | |
[решено] Распаковщик Smart Install Maker | D_Master | Хочу все знать | 3 | 31-05-2011 15:05 | |
[решено] Интересует куда делись Regedit.exe | NTSD.exe | NETSETUP.exe | TELNET.exe | Ricardo | Проект WinStyle | 11 | 30-07-2009 23:36 | |
Отладчик exe файлов | Go2 | Программирование и базы данных | 2 | 29-09-2005 12:34 | |
*Решено* | Нужен распаковщик PECompact 1.22 -> Jeremy Collake | RAY | Программирование и базы данных | 2 | 23-01-2005 15:01 |
|