Войти

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 [40] 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

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, Код рабочий,в чем-то у вас косяк.Может компилировали без данного кода?
Если не коммерческая тайна,можете выложить скрипт с файлом я посмотрю

Irenis
24-05-2014, 23:59
При создании установщика через мастера Inno Setup в окне "файлы приложения" нужно выбрать главный исполняемый файл приложения. При этом ярлык, который появится на рабочем столе после установки игры, автоматически берется из этого запускного файла. Как поставить другой ярлык? То есть что нужно прописать в скрипте, чтобы самой задать иконку ярлыка, которая должна появится на рабочем столе после установки игры, при этом не меняя главный исполняемый файл? Спасибо))

TryRooM
25-05-2014, 00:14
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

saurn
25-05-2014, 01:43
Dodakaedr, он не будет работать на юникоде. Тут (http://forum.oszone.net/post-2291020-1870.html) для юникодовой. Или пример от El Sanchez в шапке.

habib2302
25-05-2014, 08:57
Всем привет. Дайте пожалуйста скрипт на создание txt файов

Irenis
25-05-2014, 13:33
Скажите пожалуйста, а как делать установщики, в которых был бы сам setup, а под ним остальные файлы в формате .bin. Сейчас я просто создаю установщик, создаю arc архив, и при установке распаковывается этот архив и игра устанавливается. А как сделать, чтобы вместо arc было bin? Тоже сначала архивировать FreeArc-ом, а потом как то в bin переделывать или там вообще по другому все делается? Может кто объяснит или подскажет, где об этом почитать можно :)

vint56
25-05-2014, 13:46
Irenis, просто переименуй расширения файла с arc на bin можно сразу во фриарке там есть выходной архив там есть расширения arc можеш поставить любое только в скрипте на распаковку укажи названия архива и расширения файла
Пример
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-A.Irenis), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;

Irenis
25-05-2014, 14:01
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;
?
И больше в скрипте ничего не нужно менять?

vint56
25-05-2014, 14:36
Irenis, Да

saurn
25-05-2014, 15:36
Дайте пожалуйста скрипт на создание txt файов »
[Code]
procedure InitializeWizard();
begin
//SaveStringToFile( 'test.txt', 'String', False );
SaveStringsToFile( 'test.txt', ['String1', 'String2', 'String3'], False );
end;

nik1967
25-05-2014, 15:38
И больше в скрипте ничего не нужно менять? »
В скрипте - нет. Но надо будет переименовать Karos.arc в Karos.bin. Или в Karos.Irenis :). Но тогда в скрипте нужно будет переделать на ISArcExtract ( 0, 0, ExpandConstant('{src}\Karos.Irenis), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;

Irenis
25-05-2014, 16:23
что нужно прописать в скрипте, чтобы самой задать иконку ярлыка, которая должна появится на рабочем столе после установки игры, при этом не меняя главный исполняемый файл? »
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
Зачем две строчки? :)
з.ы. т.к. без файлов, то не компилил.

Irenis
25-05-2014, 17:52
Что то я уже совсем запуталась с этим ярлыком. Как сделать ярлык со своей картинкой? Постом выше выложила скрипт. Там есть строчка :
SetupIconFile=E:\Karos\MainIcon.ico
Вот мне нужно эту же картинку поставить и на ярлык. А у меня ярлык получается либо пустой (просто белый), либо с логотипом GameXP

Код, который мне дали выше. Куда в нем вставить свою картинку?

Irenis
25-05-2014, 18:10
Тут (http://files.mail.ru/D8BD2CB4D52F46A9A1D27EF8FC58D86F) необходимые файлы для скрипта (не знаю, может еще что надо). Картинку с названием "3" мне нужно сделать ярлыком.

vint56
25-05-2014, 19:18
Irenis, http://rghost.ru/55845692

Nordek
25-05-2014, 19:41
Что то я уже совсем запуталась с этим ярлыком. »Да, люди умеют объяснять - что ничего не поймёшь.

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