как да се покаже диалоговият прозорец моля изчакайте, докато EXEC() изпълнява друго приложение тихо.
как да се покаже диалоговият прозорец моля изчакайте по време на функцията EXEC().
Отговори (2)
Наистина ли трябва да бъде кутия за съобщения? Както може би знаете, можете да стартирате външен *.exe по време на настройката и междувременно да показвате потребителско съобщение за състояние. (Съобщението за състояние ще бъде на обичайния етикет за напредъка по време на инсталацията.)
Имам setup.exe, който инсталира продукт A. Този setup.exe съдържа файл setup2.exe, използван за настройка на продукт B. setup.exe копира setup2.exe в папката Program Files по време на инсталирането на продукт A. Когато всички файлове са били копирани, setup.exe след това стартира setup2.exe във фонов режим. За да постигна това, направих
[Run]
Filename: "{app}\setup2.exe"; StatusMSG: "Installing Product 2..."; Parameters: "/VERYSILENT /SUPPRESSMSGBOXES"
в setup.iss (който се компилира в setup.exe). setup2.exe също е инсталатор на Inno Setup, така че параметрите "/VERYSILENT /SUPPRESSMSGBOXES" ще направят инсталирането на продукт 2 безшумно. По време на тази настройка setup.exe ще покаже съобщението „Инсталиране на продукт 2...“.
Ако наистина имате нужда от изскачащо поле за съобщение със съобщението за статус, ще трябва да прибегнете до скриптове на Pascal.
Exec
? Защо не можете да използвате [Run]
елемент вместо това? Една причина, за която се сещам, е, че трябва да изпълните програмата условно, тоест имате нещо като if ShouldExecute then Exec(...);
, където ShouldExecute
е функция с булева стойност. Но [Run]
елемента също могат да бъдат условни; просто добавете Check:ShouldExecute
към него. Вижте jrsoftware.org/ishelp/topic_scriptcheck.htm
- person Andreas Rejbrand; 03.09.2010
Можете да използвате ProgressOutputWizardPage, който работи добре за мен, което не е точно сложно. Можете да се обърнете към примера на CodeDlg.iss.