2016-05-02 3 views
0

Так я бегу мой инсталлятор с помощью следующей команды:Inno Сбои установки часто при запуске в автоматическом режиме

C:\Program Files (x86)\Example\ExampleSetup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART 

Но по какой-то странной причине установки имеет 50% шанс неудачи, и когда он не в состоянии она возвращает случайный код выхода от 0-3.
Я думаю, что это может быть из-за /VERYSILENT, потому что я никогда не видел такого поведения при его бесшумном запуске.
Я также использую SetupMutex в разделе [Setup], так может ли это быть так, что его кратковременная половина времени?
Я также хотел бы получить осмысленный код выхода, если процесс завершился сбоем, поэтому я мог бы отладить проблему.
Это выход журнала:

2016-05-02 11:33:01.421 Log opened. (Time zone: UTC+03:00) 
2016-05-02 11:33:01.421 Setup version: Inno Setup version 5.5.6 (u) 
2016-05-02 11:33:01.421 Original Setup EXE: C:\Program Files (x86)\Maprinter\MaprinterSetup.exe 
2016-05-02 11:33:01.421 Setup command line: /SL5="$F403AE,242855,184832,C:\Program Files (x86)\Maprinter\MaprinterSetup.exe" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART "/LOG=C:\Program Files (x86)\Maprinter\MaprinterSetup.log" Restart 
2016-05-02 11:33:01.421 Windows version: 10.0.10586 (NT platform: Yes) 
2016-05-02 11:33:01.421 64-bit Windows: Yes 
2016-05-02 11:33:01.421 Processor architecture: x64 
2016-05-02 11:33:01.421 User privileges: Administrative 
2016-05-02 11:33:01.422 64-bit install mode: No 
2016-05-02 11:33:01.425 Created temporary directory: C:\WINDOWS\TEMP\is-SM12R.tmp 
2016-05-02 11:33:01.494 Extracting temporary file: C:\WINDOWS\TEMP\is-SM12R.tmp\InnoCallback.dll 
2016-05-02 11:33:01.593 Extracting temporary file: C:\WINDOWS\TEMP\is-SM12R.tmp\unzipper.dll 
2016-05-02 11:33:01.723 Exception message: 
2016-05-02 11:33:01.723 Defaulting to OK for suppressed message box (OK): 
          Error reading WelcomeLabel2.Caption: System Error. Code: 1411. 
          Class does not exist. 
2016-05-02 11:33:01.723 Deinitializing Setup. 
2016-05-02 11:33:01.728 Log closed. 

Это другой выход журнала для одной и той же проблемы:

2016-05-02 12:04:50.495 Log opened. (Time zone: UTC+03:00) 
2016-05-02 12:04:50.495 Setup version: Inno Setup version 5.5.6 (u) 
2016-05-02 12:04:50.495 Original Setup EXE: C:\Program Files (x86)\Maprinter\MaprinterSetup.exe 
2016-05-02 12:04:50.495 Setup command line: /SL5="$177016C,242855,184832,C:\Program Files (x86)\Maprinter\MaprinterSetup.exe" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /LOG=C:\Users\yuvadius\Desktop\MaprinterSetup.log Restart 
2016-05-02 12:04:50.495 Windows version: 10.0.10586 (NT platform: Yes) 
2016-05-02 12:04:50.495 64-bit Windows: Yes 
2016-05-02 12:04:50.495 Processor architecture: x64 
2016-05-02 12:04:50.495 User privileges: Administrative 
2016-05-02 12:04:50.496 64-bit install mode: No 
2016-05-02 12:04:50.500 Created temporary directory: C:\WINDOWS\TEMP\is-NFR0Q.tmp 
2016-05-02 12:04:50.528 Extracting temporary file: C:\WINDOWS\TEMP\is-NFR0Q.tmp\InnoCallback.dll 
2016-05-02 12:04:50.607 Extracting temporary file: C:\WINDOWS\TEMP\is-NFR0Q.tmp\unzipper.dll 
2016-05-02 12:04:50.763 Exception message: 
2016-05-02 12:04:50.763 Defaulting to OK for suppressed message box (OK): 
          System Error. Code: 8. 
          Not enough storage is available to process this command. 
2016-05-02 12:04:50.763 Deinitializing Setup. 
2016-05-02 12:04:50.770 Log closed. 

Так что мой конкретный вопрос: Почему мой инсталлятор сбоя часто и что я могу сделать, чтобы решить эту проблему?

+0

На какой стадии он падает? Покажите нам файл журнала и полный скрипт. –

+0

Установщик не создает файл журнала. – yuval

+0

Это мой полный скрипт, если вам нужно, http://textuploader.com/5yi0l – yuval

ответ

0

Я бы начал с временного удаления материала «таймера».

Скорее всего, таймер истекает примерно через какое-то время, когда заканчивается автоматическая бесшумная установка, поэтому mytimerproc пытается получить доступ к окну, которое больше не существует, или скрипт pascal - это разрушаемый движок.

Если это окажется так (и на самом деле, даже если нет), вы должны исправить эти проблемы:

  • вам нужно уничтожить таймер, когда программа установки закрытия (возможно от CurStepChanged(ssDone))
  • вы, возможно, даже не хотите планировать таймер в очень тихих установках, так как нет прозрачной формы.
  • Вы должны запланировать таймер в InitializeWizard, а не в InitializeSetup, так как вы рискуете, что окно еще не существует, но в противном случае, когда таймер истекает, если установщик начинает медленно.
+0

У меня все еще есть одна и та же проблема, но я обязательно буду реализовывать ваши предложения. – yuval

+0

ОК, тогда нам нужно увидеть журнал, чтобы узнать, когда произошел сбой. Хотя в общем, вы должны начать с удаления кода по частям, чтобы узнать, что вызывает сбой. Или, по крайней мере, добавить некоторые записи (['Log' function] (http://www.jrsoftware.org/ishelp/index.php?topic=isxfunc_log) в каждой вашей функции, чтобы помочь отлаживать. –

Смежные вопросы