Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
Dodakaedr
24-05-2014, 22:18
saneksanek, Почему не убивает процесс?[Setup]
AppName=My Program
AppVerName=My Program ver.1.5
DefaultDirName={pf}\My Program
[Files]
Source: "compiler:Dll Pack\ISTask.dll"; DestDir: "{app}"
[ Code]
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';
function KillTask(ExeFileName: string): Integer;
external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
if RunTask('USBSRService.exe', False) then
begin
// прячем форму
UninstallProgressForm.Visible:= False;
if MsgBox('Программа USBSRService.exe используется. Закрыть и продолжить удаление?', mbConfirmation, MB_YESNO) = IDYES then
begin
KillTask('USBSRService.exe');
UnloadDll(ExpandConstant('{app}\ISTask.dll'));
// показываем форму
UninstallProgressForm.Visible:= True;
end
else
begin
MsgBox('Завершите работу file.exe, затем снова запустите программу удаления.', mbInformation, MB_OK);
UnloadDll(ExpandConstant('{app}\ISTask.dll'));
Abort;
end;
end;
end;
И никаких сообщений не выводится, хоть процесс запущен http://savepic.net/5560032m.jpg (http://savepic.net/5560032.htm)
saneksanek
24-05-2014, 23:52
Dodakaedr, Код рабочий,в чем-то у вас косяк.Может компилировали без данного кода?
Если не коммерческая тайна,можете выложить скрипт с файлом я посмотрю
При создании установщика через мастера Inno Setup в окне "файлы приложения" нужно выбрать главный исполняемый файл приложения. При этом ярлык, который появится на рабочем столе после установки игры, автоматически берется из этого запускного файла. Как поставить другой ярлык? То есть что нужно прописать в скрипте, чтобы самой задать иконку ярлыка, которая должна появится на рабочем столе после установки игры, при этом не меняя главный исполняемый файл? Спасибо))
Irenis,
[Icons]
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" ; IconFileName: "{app}\твоя иконка.ico.";
Dodakaedr
25-05-2014, 00:32
Если не коммерческая тайна,можете выложить скрипт с файлом я посмотрю »
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
[Files]
Source: "compiler:Dll Pack\ISTask.dll"; DestDir: "{app}"; Flags: ignoreversion
[ Code]
function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload setuponly';
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload setuponly';
function KillTaskA(ExeFileName: string): Integer;
external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';
function RunTaskA(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';
function InitializeSetup(): Boolean;
begin
if not FileExists(ExpandConstant('{tmp}\ISTask.dll')) then ExtractTemporaryFile('ISTask.dll');
If RunTask('USBSRService.exe', False) then // Указываем программу, которая должна припятствовать установке.
begin
if MsgBox('Программа установки обнаружила, что программа Scanner запущена в данный момент.'#13#13'Закрыть программу и продолжить установку?', mbInformation, mb_YesNo) = idYes then
begin
KillTask('USBSRService.exe'); // Указываем программу, которая должна будет закрыться
Result := True;
end else
Exit;
end;
Result := True;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
begin
UnloadDLL(ExpandConstant('{app}\ISTask.dll'));
end;
end;
function InitializeUninstall(): Boolean;
begin
If RunTaskA('USBSRService.exe', false) then // Указываем программу, которая должна припятствовать удалению.
begin
if MsgBox('Программа удаления обнаружила, что программа Scanner запущена в данный момент.'#13#13'Закрыть программу и продолжить удаление?', mbInformation, mb_YesNo) = idYes then
begin
KillTaskA('USBSRService.exe'); // Указываем программу, которая должна будет закрыться
Result := True;
end else
Exit;
end;
Result := True;
end;
установите сначала программу, а потом используйте код свыше. (http://rghost.ru/55832405) У меня не работает
saneksanek
25-05-2014, 01:12
Этого процесса изначально нет,потому и нет диалоговых окон.Закройте программу и запустите снова,сама программа весит на USBSafelyRemove.exe
Dodakaedr, он не будет работать на юникоде. Тут (http://forum.oszone.net/post-2291020-1870.html) для юникодовой. Или пример от El Sanchez в шапке.
habib2302
25-05-2014, 08:57
Всем привет. Дайте пожалуйста скрипт на создание txt файов
Скажите пожалуйста, а как делать установщики, в которых был бы сам setup, а под ним остальные файлы в формате .bin. Сейчас я просто создаю установщик, создаю arc архив, и при установке распаковывается этот архив и игра устанавливается. А как сделать, чтобы вместо arc было bin? Тоже сначала архивировать FreeArc-ом, а потом как то в bin переделывать или там вообще по другому все делается? Может кто объяснит или подскажет, где об этом почитать можно :)
Irenis, просто переименуй расширения файла с arc на bin можно сразу во фриарке там есть выходной архив там есть расширения arc можеш поставить любое только в скрипте на распаковку укажи названия архива и расширения файла
Пример
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-A.Irenis), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
vint56, Спасибо большое :wink:
То есть (например в игре Karos) если раньше у меня была такая строчка:
if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\Karos.arc'), ExpandConstant('{app}\'), false,CallBack, '', '', '') then break;
То теперь вот так:
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Karos.bin), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
?
И больше в скрипте ничего не нужно менять?
Дайте пожалуйста скрипт на создание txt файов »
[Code]
procedure InitializeWizard();
begin
//SaveStringToFile( 'test.txt', 'String', False );
SaveStringsToFile( 'test.txt', ['String1', 'String2', 'String3'], False );
end;
И больше в скрипте ничего не нужно менять? »
В скрипте - нет. Но надо будет переименовать Karos.arc в Karos.bin. Или в Karos.Irenis :). Но тогда в скрипте нужно будет переделать на ISArcExtract ( 0, 0, ExpandConstant('{src}\Karos.Irenis), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
что нужно прописать в скрипте, чтобы самой задать иконку ярлыка, которая должна появится на рабочем столе после установки игры, при этом не меняя главный исполняемый файл? »
Irenis,
[Icons]
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" ; IconFileName: "{app}\твоя иконка.ico."; »
Попробовала, что то не получается. Вот (http://files.mail.ru/47A69BF2233C4031999C80481ECCFC07) скрипт. Добавила эту строчку, так у меня теперь вообще никакой картинки, просто белый ярлык.
sergey3695
25-05-2014, 17:02
Irenis,
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; IconFileName: "{app}\{#MyAppName}"; Tasks: desktopicon
Зачем две строчки? :)
з.ы. т.к. без файлов, то не компилил.
Что то я уже совсем запуталась с этим ярлыком. Как сделать ярлык со своей картинкой? Постом выше выложила скрипт. Там есть строчка :
SetupIconFile=E:\Karos\MainIcon.ico
Вот мне нужно эту же картинку поставить и на ярлык. А у меня ярлык получается либо пустой (просто белый), либо с логотипом GameXP
Код, который мне дали выше. Куда в нем вставить свою картинку?
Тут (http://files.mail.ru/D8BD2CB4D52F46A9A1D27EF8FC58D86F) необходимые файлы для скрипта (не знаю, может еще что надо). Картинку с названием "3" мне нужно сделать ярлыком.
Irenis, http://rghost.ru/55845692
Что то я уже совсем запуталась с этим ярлыком. »Да, люди умеют объяснять - что ничего не поймёшь.
SetupIconFile=E:\Karos\MainIcon.ico »И что? Это значок для инсталлятора setup.exe. После установки, станет значком для деинсталлятора unins000.exe.
А у меня ярлык получается либо пустой (просто белый) »Ну правильно. А от куда он по вашему возьмётся?
Его наверно нужно добавить в секцию [Files] т.е:
[Files]
Source: 3.ico; DestDir: {app}; Flags: ignoreversion; Attribs: hidden system
т.е этот значок будет помещён в каталог устанавливаемой программы.
hidden system - сделаем значок скрытым и системным, для того чтоб не было видно в каталоге установленной программы.
Если хотите видеть этот значок в каталоге установленной программы, то hidden system можно не применять т.е
[Files]
Source: 3.ico; DestDir: {app}; Flags: ignoreversion
А теперь применим этот значок к ярлыку:
[Icons]
Name: {commondesktop}\My Program; Filename: {app}\MyProg.exe; IconFilename: {app}\3.ico
Вот вам пример (https://mega.co.nz/#!VAczVDxS!hQPAL2LSLEKFqeFAz9jf_3NOTDMyIRfS-U4NDSyG35c).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.