PDA

Показать полную графическую версию : Создание файла ответов MST к новым инсталляторам Windows Installer.


Страниц : 1 [2] 3

cameron
24-05-2012, 20:06
InstallTailor 6.0 »

Anton04
25-05-2012, 10:03
cameron,

К сожалению, но не подошёл "this package does not support hiding dialogs" и даже если продолжить все диалоги в каких-то английских названиях строк (типа PLACEHOLDER_-2066447959). :sorry:

Iska
25-05-2012, 10:26
все диалоги в каких-то английских названиях строк (типа PLACEHOLDER_-2066447959). »
Anton04, разве не именно так они выглядят нынче в самом msi-файле Opera?

Anton04
25-05-2012, 10:42
Iska,

Вполне возможно, только всё ровно это не то...

Iska
25-05-2012, 11:24
Вполне возможно, »
http://img521.imageshack.us/img521/1635/image420120525112158.th.png (http://img521.imageshack.us/i/image420120525112158.png/)

Официально msi-инсталлятор для Opera давно уже не поддерживается, увы.

только всё ровно это не то... »
Я понимаю. Мой пост касался только процитированного — касательно «типа PLACEHOLDER», не более.

Anton04
25-05-2012, 11:55
Iska,

Понятно, ищем дальше... может и повезёт...

AlexKr
25-05-2012, 13:40
Официально msi-инсталлятор для Opera давно уже не поддерживается, увы »
А чего норвеги с выходом каждой новой версии его выкладывают?

Anton04
25-05-2012, 13:59
А чего норвеги с выходом каждой новой версии его выкладывают? »

да, в папке autoupdate (http://http://get.opera.com/pub/opera/win/) любой версии...

Iska
25-05-2012, 16:22
А чего норвеги с выходом каждой новой версии его выкладывают? »
Выкладывать-то выкладывают, но поддерживать — не поддерживают:

But first of all, I'm happy to announce that as of yesterday, this new installer will be the one and only Opera installer. The classic installer and the MSI installer are discontinued, with the exception of MSI autoupdate packages that will still be provided for a while to make people able to update from versions prior to 11.
To put it simply, those of you who dislike MSI won't have to deal with it anymore. For those of you who used the classic installer, we will make sure that you don't miss anything with the new installer.

И далее по ссылке: Opera Desktop Team - The new Opera Installer (http://my.opera.com/desktopteam/blog/2010/10/22/the-new-opera-installer).

Iska
25-05-2012, 19:15
Anton04, а так ли уж Вам нужен универсальный редактор? Может быть, сгодится и прямой способ, наподобие:
Option Explicit

Const msiOpenDatabaseModeReadOnly = 0
Const msiOpenDatabaseModeTransact = 1

Dim strPath2OriginalMSI
Dim strPath2WorkingMSI
Dim strPath2MST

Dim objFSO
Dim objWindowsInstaller

Dim strQuery


strPath2OriginalMSI = "C:\Песочница\0008\Opera_1164_1403_in.msi"
strPath2WorkingMSI = GetTemporaryName()

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

With objFSO
strPath2MST = .BuildPath(.GetParentFolderName(strPath2OriginalMSI), .GetBaseName(strPath2OriginalMSI) & ".mst")
.CopyFile strPath2OriginalMSI, strPath2WorkingMSI
End With


Set objWindowsInstaller = WScript.CreateObject("WindowsInstaller.Installer")

' Меняем путь установки приложения по умолчанию:
strQuery = "UPDATE `Directory` SET `DefaultDir`='MyOperaPath' WHERE `Directory` = 'OPERA' AND `Directory_Parent` = 'ProgramFilesFolder'"

With objWindowsInstaller.OpenDatabase(strPath2WorkingMSI, msiOpenDatabaseModeTransact)
With .OpenView(strQuery)
.Execute
.Close
End With

.Commit

If .GenerateTransform( _
objWindowsInstaller.OpenDatabase(strPath2OriginalMSI, msiOpenDatabaseModeReadOnly), _
strPath2MST _
) Then

WScript.Echo "Create [" & strPath2MST & "]."
Else
WScript.Echo "Can't create [" & strPath2MST & "]."
End If
End With

Set objWindowsInstaller = Nothing
objFSO.DeleteFile strPath2WorkingMSI, True
Set objFSO = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
' Серый форум / VBScript: генерация пути для временного файла или папки
' (http://forum.script-coding.com/viewtopic.php?id=1221)
'=============================================================================
Function GetTemporaryName()
Const TemporaryFolder = 2

Dim strTempName

With WScript.CreateObject("Scripting.FileSystemObject")
Do
strTempName = .BuildPath(.GetSpecialFolder(TemporaryFolder), .GetTempName)
Loop While .FileExists(strTempName) Or .FolderExists(strTempName)
End With

GetTemporaryName = strTempName
End Function
'=============================================================================
(полагаю, аналогичного результата можно добиться и при помощи существующих утилит/скриптов из комплекта поставки Windows Installer SDK, разве что свой скрипт даёт большую гибкость). Вам ведь вряд ли нужно создать файлы преобразований для ста тысяч приложений, скорее — периодически пересоздавать файл преобразований с выходом новых версий приложения, так я понял из предыдущего обсуждения.

Anton04
26-05-2012, 13:40
Может быть, сгодится и прямой способ, наподобие: »

К сожалению нет, почему см. ниже.

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

Да всё верно. Если бы мне нужно было изменять только путь установки, я бы банально поменял его используя Orca и не заморачивался.
Но дело в том что мне нужно ещё и добавлять файлы и делать определённые прописи в реестре. А этого обычным скриптом уж не сделаешь. И главное всё это запихнуть в mst (чтоб распространять уже через GPO).

Вот поэтому и ищется такое средство.

Iska
26-05-2012, 20:14
Но дело в том что мне нужно ещё и добавлять файлы и делать определённые прописи в реестре. А этого обычным скриптом уж не сделаешь. »
Точно нельзя? Вы пробовали (я не пробовал, потому не могу дать какого-либо суждения)? Приведите какой-либо конкретный пример потребного файла и параметра в реестре.

И главное всё это запихнуть в mst (чтоб распространять уже через GPO). »
Изменение пути в приведённом примере я, пользуясь Вашей терминологией, «запихнул» в *.mst. Что не так?!

Anton04
26-05-2012, 23:01
Точно нельзя? Вы пробовали »

Нет не пробовал. Но я имел в виду именно Ваш приведённый скрипт.

Приведите какой-либо конкретный пример потребного файла и параметра в реестре. »

Не понимаю зачем это, так инструмента для добавления его в mst всё ровно нет...

Изменение пути в приведённом примере я, пользуясь Вашей терминологией, «запихнул» в *.mst. Что не так?! »

Частичное решение не устраивает. Мне нужно или всё или ничего.

Iska
27-05-2012, 03:08
Нет не пробовал. Но я имел в виду именно Ваш приведённый скрипт. »
Там было в качестве примера только изменение пути установки.

Не понимаю зачем это…»
Затем, чтобы мне не приходилось изобретать примеры с ярлыком и реестром, которые Вам однозначно не пригодятся. Однако фактически, коллега, Вы вынуждаете меня делать это, не приводя ответа на прямо поставленный мною вопрос.

…так инструмента для добавления его в mst всё ровно нет... »
А если найду добавлю?

Частичное решение не устраивает. Мне нужно или всё или ничего. »
Ну, так попробуйте наконец. Windows Installer весьма и весьма масштабируемая технология.

Например:
Option Explicit

Const msiOpenDatabaseModeReadOnly = 0
Const msiOpenDatabaseModeTransact = 1

Dim strPath2OriginalMSI
Dim strPath2WorkingMSI
Dim strPath2MST

Dim objFSO
Dim objWindowsInstaller
Dim objDatabase

Dim strQuery


strPath2OriginalMSI = "D:\Install\Opera\Opera 11.64\Opera_1164_1403_in.msi"
strPath2WorkingMSI = GetTemporaryName()

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

With objFSO
strPath2MST = .BuildPath(.GetParentFolderName(strPath2OriginalMSI), .GetBaseName(strPath2OriginalMSI) & ".mst")
.CopyFile strPath2OriginalMSI, strPath2WorkingMSI
End With


Set objWindowsInstaller = WScript.CreateObject("WindowsInstaller.Installer")

With objWindowsInstaller.OpenDatabase(strPath2WorkingMSI, msiOpenDatabaseModeTransact)
' Меняем путь установки приложения по умолчанию:
strQuery = "UPDATE `Directory` SET `DefaultDir`='MyOperaPath' WHERE `Directory` = 'OPERA' AND `Directory_Parent` = 'ProgramFilesFolder'"

With .OpenView(strQuery)
.Execute
.Close
End With

' Добавляем параметр реестра:
strQuery = "INSERT INTO `Registry` " & _
"(`Registry`, `Root`, `Key`, `Name`, `Value`, `Component_`) VALUES " & _
"('Registry15', 2, 'SOFTWARE\Opera Software', 'My Key', 'My Value', 'ApplicationRegistration')"

With .OpenView(strQuery)
.Execute
.Close
End With

' Добавляем ярлык:
strQuery = "INSERT INTO `Shortcut` " & _
"(`Shortcut`, `Directory_`, `Name`, `Component_`, `Target`, `ShowCmd`) VALUES " & _
"('DesktopShortcut0', 'DesktopFolder', 'License', 'DesktopIcon', '[INSTALLDIR]defaults\license.txt', 1)"

With .OpenView(strQuery)
.Execute
.Close
End With

.Commit

Set objDatabase = objWindowsInstaller.OpenDatabase(strPath2OriginalMSI, msiOpenDatabaseModeReadOnly)

If .GenerateTransform(objDatabase, strPath2MST) Then
.CreateTransformSummaryInfo objDatabase, strPath2MST, 0, 0

WScript.Echo "Create [" & strPath2MST & "]."
Else
WScript.Echo "Can't create [" & strPath2MST & "]."
End If

Set objDatabase = Nothing
End With

Set objWindowsInstaller = Nothing
objFSO.DeleteFile strPath2WorkingMSI, True

Set objFSO = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
' Серый форум / vbscript: генерация пути для временного файла или папки
' (http://forum.script-coding.com/viewtopic.php?id=1221)
'=============================================================================
Function GetTemporaryName()
Const TemporaryFolder = 2

Dim strTempName

With WScript.CreateObject("Scripting.FileSystemObject")
Do
strTempName = .BuildPath(.GetSpecialFolder(TemporaryFolder), .GetTempName)
Loop While .FileExists(strTempName) Or .FolderExists(strTempName)
End With

GetTemporaryName = strTempName
End Function
'=============================================================================

Anton04
28-05-2012, 10:45
Там было в качестве примера только изменение пути установки. »

И именно поэтому не устраивает тоже. Потому как я писал выше Если бы мне нужно было изменять только путь установки, я бы банально поменял его используя Orca и не заморачивался. » ;)

А если найду добавлю? »

Хм.... заманчивое предложение... Но как же Ваше предыдущее высказывание И я не против. И — нет, разумеется, не возьмусь: у меня нет потребности в подобном универсальном средстве. » !?
Передумали? Тогда могу озвучить задачу подробно, полностью и с примерами..

Windows Installer весьма и весьма масштабируемая технология. »

Не сомневаюсь...

Iska
28-05-2012, 11:35
Но как же Ваше предыдущее высказывание »
Ничего не изменилось: за создание универсального средства я по-прежнему не возьмусь.

Тогда могу озвучить задачу подробно, полностью и с примерами.. »
Попробуйте изложить, хотя я предполагал, что Вы выкатите уже готовый потребный Вам msi-пакет Opera с внесёнными изменениями (например, посредством того же Orca).

Anton04
28-05-2012, 12:44
хотя я предполагал, что Вы выкатите уже готовый потребный Вам msi-пакет Opera с внесёнными изменениями (например, посредством того же Orca). »

Нет такого у меня нет, это то как раз и планируется! ;)
Брать оригинальный msi пакет и на его основе создавать файл ответов (mst) со всеми вкусностями которые может предоставить нам этот файл ответов. А что же тогда это коли не универсальное средство!?

Попробуйте изложить »

Попробую в контексте той же Opera`ы в качестве примера:

Есть оригинальный msi пакет (Opera_1164_1403_in.msi). Нужно создать файл ответов в который добавляется настроенный профиль пользователя со всеми необходимыми прибамбасами, т.е. содержимое папки profile Opera`ы. Добавляться должно по стандартному многоприфильному пути в %APPDATA%\opera\opera и в профиль по умолчанию. Плюс вносится изменение в реестр в раздел HKLM\Software\Classes и HKCU\Software\Classes из заранее сохранённого reg файла (фактически ставятся такие опции как "использовать браузер по умолчанию" и ассоциация на открытие этим браузером соответствующих типов файлов, вполне вероятно что именно вмешательство в реестр и не понадобится если в файле ответов будет указана опция "Использовать браузер по умолчанию").

MKN
28-05-2012, 13:06
Anton04,
Попробуй создать mst с помощью Instedit (http://www.instedit.com/workingwithtransforms.html) или с помощью более серьёзного ПО - AdminStudio Tuner (пример был здесь : http://technet.microsoft.com/ru-ru/library/bb490284.aspx )

ИМХО, конкретно для Opera , использовать mst - извращение. Гораздо проще и эффективнее варьировать установкой с помощью собственного набора ключей, сделав собственный установщик, к примеру на NSIS.

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

Anton04
28-05-2012, 13:19
Попробуй создать mst с помощью Instedit »

Попробую отпишусь. :hi:
Посмотрел, насколько я понял данный продукт не очень то отличается от Orca. К сожалению не пойдёт, т.к. у него другое "призвание".

или с помощью более серьёзного ПО - AdminStudio Tuner »

Это, как было сказано выше, из пушки по воробьям. ;)

ИМХО, конкретно для Opera , использовать mst - извращение. Гораздо проще и эффективнее варьировать установкой с помощью собственного набора ключей, сделав собственный установщик, к примеру на NSIS. »

Не извращение, а вполне нормально, т.к. всё планируется разворачивать через GPO и никакие NSIS в GPO не приемлемы. ;)

Iska
28-05-2012, 13:51
А что же тогда это коли не универсальное средство!? »
В моём представлении — конкретно «заточенное» вполне определённым и заранее заданным способом, под определённое приложение, средство.

т.к. »
Я правильно сообразил, что сие должно означать «такой как»?

Нужно создать файл ответов в который добавляется настроенный профиль пользователя со всеми необходимыми прибамбасами, »
По здравому размышлению — нет, за внедрение с нуля кучи файлов в пакет я не возьмусь. Уж больно много возиться придётся — дюже хлопотно выйдет, особливо учитывая не совсем стандартный состав msi-пакета от Opera.

Если не станете использовать предложенное коллегой MKN средство, и возникнет желание — загрузите Windows Installer SDK и попробуйте разобраться сами.




© OSzone.net 2001-2012