вопрос от новичка. помогите! как починить кривую последовате
От: Аноним  
Дата: 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: вопрос от новичка. помогите! как починить кривую последо
От: bnk СССР http://unmanagedvisio.com/
Дата: 16.10.07 14:27
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как можно удалить кривую инсталяцию?


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]: вопрос от новичка. помогите! как починить кривую посл
От: bnk СССР http://unmanagedvisio.com/
Дата: 17.10.07 15:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Непонятно выразилась... Каждую ночь у моего продукта увеличивается номер ревизии (последний номер в четвёрке 1.2.0.4). Пользователи, делая новую инсталляцию, ставят например версию с номером 1.2.0.4 на версию с номером 1.2.0.3 поверх, без деинсталляции. При этом появляется сообщение про то, что сейчас будет апгрейд. Я хочу понять, какое нужно задать условие, чтобы детектить эту ситуацию. Это я так понимаю не major upgrade, а какой-то другой. А как его определять, не нашла.


IMHO это должен быть таки major upgrade (т.е. предыдущая версия удаляется, новая ставится).
Тогда в IS проперти "IS_MAJOR_UPGRADE" должна быть установлена.

Вроде еще в "Upgrades" должна быть прописываться проперти,
в которую заносится предыдущая версия продукта, если найдена.
Re: вопрос от новичка. помогите! как починить кривую последо
От: Андрей Россия  
Дата: 18.10.07 05:22
Оценка:
Здравствуйте, Аноним, Вы писали:

skip

Лучше, имхо, использовать возможности 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]: вопрос от новичка. помогите! как починить кривую посл
От: Eugen_Stogniy  
Дата: 19.10.07 15:33
Оценка:
А>Кажется поняла, почему у меня не происходит апгрейд. Ревизия у меня меняется только в дллках инсталлируемго продукта. В 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.