вопрос от новичка. помогите! как починить кривую последовате
От:
Аноним
Дата:
16.10.07 13:16
Оценка:
Installshield, проект типа Basic MSI
Несколько раз уже напарывалась на проблему. Задаю installation sequence,
указываю Condition = Installed чтобы остановить и удалить сервис из фичи A.
Далее в последовательности указываю Condition &A = 3 чтобы это сервис инсталлировать и запустить.
В определённых обстоятельствах это схема сбоит, например сервис деинсталлируется, но не инсталлируется, или наоборот, пытается запуститься когда уже удалён и т.д. и т.п. и тогда я не могу деинсталировать приложение.
Что тут можно сделать? Как можно удалить кривую инсталяцию? Очевидно, что подобные ошибки будут возникать ещё не раз.
Пару раз прошлась по реестру, удаляя все упоминания о программе, но это метод явно дурной...
P.S. заодно, если кто-то может подсказать, как написать условие, чтобы при апгрейде приложения на +1 revision сервис стартовал, буду благодарна.
Я пишу &A = 3. Но это условие не срабатывает.. Видимо потому что A уже и так = 3. Условие !A = 3 даёт проблемы при деинсталляции...
Re: вопрос от новичка. помогите! как починить кривую последо
Здравствуйте, Аноним, Вы писали:
А>Как можно удалить кривую инсталяцию?
MsiZap.exe и ее UI-версия
А>P.S. заодно, если кто-то может подсказать, как написать условие, чтобы при апгрейде приложения на +1 revision сервис стартовал, буду благодарна. А>Я пишу &A = 3. Но это условие не срабатывает.. Видимо потому что A уже и так = 3. Условие !A = 3 даёт проблемы при деинсталляции...
Это я не понял, не подскажу.
Re[2]: вопрос от новичка. помогите! как починить кривую посл
От:
Аноним
Дата:
17.10.07 13:16
Оценка:
Здравствуйте, bnk, Вы писали:
bnk>Здравствуйте, Аноним, Вы писали:
А>>Как можно удалить кривую инсталяцию?
bnk>MsiZap.exe и ее UI-версия
— спасибо большое!!! не дождавшись ответа, опять ковырялась в реестре, но в следующий раз воспользуюсь.
А>>P.S. заодно, если кто-то может подсказать, как написать условие, чтобы при апгрейде приложения на +1 revision сервис стартовал, буду благодарна. А>>Я пишу &A = 3. Но это условие не срабатывает.. Видимо потому что A уже и так = 3. Условие !A = 3 даёт проблемы при деинсталляции... bnk>Это я не понял, не подскажу.
Непонятно выразилась... Каждую ночь у моего продукта увеличивается номер ревизии (последний номер в четвёрке 1.2.0.4). Пользователи, делая новую инсталляцию, ставят например версию с номером 1.2.0.4 на версию с номером 1.2.0.3 поверх, без деинсталляции. При этом появляется сообщение про то, что сейчас будет апгрейд. Я хочу понять, какое нужно задать условие, чтобы детектить эту ситуацию. Это я так понимаю не major upgrade, а какой-то другой. А как его определять, не нашла.
Re[3]: вопрос от новичка. помогите! как починить кривую посл
Здравствуйте, Аноним, Вы писали:
А>Непонятно выразилась... Каждую ночь у моего продукта увеличивается номер ревизии (последний номер в четвёрке 1.2.0.4). Пользователи, делая новую инсталляцию, ставят например версию с номером 1.2.0.4 на версию с номером 1.2.0.3 поверх, без деинсталляции. При этом появляется сообщение про то, что сейчас будет апгрейд. Я хочу понять, какое нужно задать условие, чтобы детектить эту ситуацию. Это я так понимаю не major upgrade, а какой-то другой. А как его определять, не нашла.
IMHO это должен быть таки major upgrade (т.е. предыдущая версия удаляется, новая ставится).
Тогда в IS проперти "IS_MAJOR_UPGRADE" должна быть установлена.
Вроде еще в "Upgrades" должна быть прописываться проперти,
в которую заносится предыдущая версия продукта, если найдена.
Re: вопрос от новичка. помогите! как починить кривую последо
Лучше, имхо, использовать возможности IS по управлению службами. Чем писать свои CA.
Если коротко, то смотри Component -> Advanced Settings -> Control NT Services и Install NT Services
У меня, по крайней мере, все работает и обновляется через эти ключи.
ПыСы Major upgrade здесь совсем не нужен.
Re[4]: вопрос от новичка. помогите! как починить кривую посл
От:
Аноним
Дата:
18.10.07 12:37
Оценка:
Здравствуйте, bnk, Вы писали:
bnk>Здравствуйте, Аноним, Вы писали:
А>>Непонятно выразилась... Каждую ночь у моего продукта увеличивается номер ревизии (последний номер в четвёрке 1.2.0.4). Пользователи, делая новую инсталляцию, ставят например версию с номером 1.2.0.4 на версию с номером 1.2.0.3 поверх, без деинсталляции. При этом появляется сообщение про то, что сейчас будет апгрейд. Я хочу понять, какое нужно задать условие, чтобы детектить эту ситуацию. Это я так понимаю не major upgrade, а какой-то другой. А как его определять, не нашла.
bnk>IMHO это должен быть таки major upgrade (т.е. предыдущая версия удаляется, новая ставится). bnk>Тогда в IS проперти "IS_MAJOR_UPGRADE" должна быть установлена.
bnk>Вроде еще в "Upgrades" должна быть прописываться проперти, bnk>в которую заносится предыдущая версия продукта, если найдена.
Понятно, спасибо.
Кажется поняла, почему у меня не происходит апгрейд. Ревизия у меня меняется только в дллках инсталлируемго продукта. В Product Properties у меня стоит Version=1.0.0 без четвертой цифры вообще. Я так написала, потому что не нашла как при каждом билде передавать новый revision number в проект. Не подскажете, как с этим побороться?
Re[2]: вопрос от новичка. помогите! как починить кривую посл
От:
Аноним
Дата:
18.10.07 12:43
Оценка:
Здравствуйте, Андрей, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>skip
А>Лучше, имхо, использовать возможности IS по управлению службами. Чем писать свои CA. А>Если коротко, то смотри Component -> Advanced Settings -> Control NT Services и Install NT Services
А>У меня, по крайней мере, все работает и обновляется через эти ключи.
я с этого начала, но наши парни сказали что у них установщик сервиса встроен в .exe, и они хотят чтобы я запускала установку сервиса и т.д. через командную строку с параметрами.
А>ПыСы Major upgrade здесь совсем не нужен.
А как нужно? Я в другой ветке пояснила, можете ли прокомментровать? Цитирую свой вопрос: "Кажется поняла, почему у меня не происходит апгрейд. Ревизия у меня меняется только в дллках инсталлируемго продукта. В Product Properties у меня стоит Version=1.0.0 без четвертой цифры вообще. Я так написала, потому что не нашла как при каждом билде передавать новый revision number в проект. Не подскажете, как с этим побороться?"
Re[3]: вопрос от новичка. помогите! как починить кривую посл
От:
Аноним
Дата:
18.10.07 12:52
Оценка:
А>Я так написала, потому что не нашла как при каждом билде передавать новый revision number в проект. Не подскажете, как с этим побороться?"
Пардон, кажется десятью строками ниже это обсуждается. Вопрос снят.
Re[5]: вопрос от новичка. помогите! как починить кривую посл
А>Кажется поняла, почему у меня не происходит апгрейд. Ревизия у меня меняется только в дллках инсталлируемго продукта. В Product Properties у меня стоит Version=1.0.0 без четвертой цифры вообще. Я так написала, потому что не нашла как при каждом билде передавать новый revision number в проект. Не подскажете, как с этим побороться?
Я боролся ВБскриптовым файлом — который открывает как текстовый файл хмл ИнсталлШилда и вставляет в значение Версион намбер новый номер
fname2 — путь к файлу инсталлшилда
versionit — 3 цифра
versionbuild — 4 цифра
iterationXX -Константа с 1 и 2 цифрой
Sub WriteNewVersion (fname2, versionit, versionbuild)
Dim VersionNumber
Dim Line
Dim startPos, endPos
Dim f1, ts, fContent
Dim originalVersion
Dim nCount
Dim text
Line = "<row><td>ProductVersion</td><td>"
Set f1 = fso.GetFile(fName2)
Set ts = f1.OpenAsTextStream(ForReading, TristateUseDefault)
fContent = ts.ReadAll
ts.Close
startPos = InStr(1, fContent, Line, 1)
endPos = InStr(startPos, fContent, "</td><td/></row>" , 1)
startPos = startPos + Len(Line)
result = Mid(fContent, startPos , endPos - startPos)
VersionNumber = iterationXX & versionit & "." & versionbuild
nCount = Len(VersionNumber)
text = Replace(fContent, result, VersionNumber , 1, nCount, 1)
Set f1 = fso.GetFile(fName2)
Set ts = f1.OpenAsTextStream(ForWriting, TristateUseDefault)
ts.Write(text)
ts.Close
End Sub