Ссылка: ПерейтиВсем привет хочу музыку себе на инсталлятор, что для этого нужно добавить и прописать!
Если бы я в скриптах шарил бы сюда бы не писал)Darck, есть же модуль bass в файловом архиве, его и юзай. там только пару строк добавить в скрипт нужно, но он использует батву, но думаю это не проблема, да и чего это должно быть проблемой
#define MyAppName "DiRT"
[Icons]
Name: {group}\Играть DiRT ; Filename: {app}\DiRT.exe; WorkingDir: {app}; Comment: {#MyAppName};
Name: {group}\Удалить DiRT; Filename: {uninstallexe}; WorkingDir: {app}\*; IconFilename: {uninstallexe}; Comment: Удалить игру {#MyAppName};
Name: {commondesktop}\DiRT; Filename: {app}\DiRT.exe; WorkingDir: {app}; Comment: {#MyAppName};
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Есть только это.Мне бы хотелось что бы было как тут что бы можно было останавливать и т.д
вотКак переместить сюда?
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';
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';
function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
if RunTask('programm.exe', False) then
begin
// прячем форму
UninstallProgressForm.Visible:= False;
if MsgBox('Программа programm.exe используется. Закрыть и продолжить удаление?', mbConfirmation, MB_YESNO) = IDYES then
begin
KillTask('programm.exe');
UnloadDll(ExpandConstant('{app}\ISTask.dll'));
// показываем форму
UninstallProgressForm.Visible:= True;
end
else
begin
MsgBox('Завершите работу programm.exe, затем снова запустите программу удаления.', mbInformation, MB_OK);
UnloadDll(ExpandConstant('{app}\ISTask.dll'));
Abort;
end;
end;
end;
//**************************************************//
function InitializeSetup(): Boolean;
begin
If RunTask('programm.exe', false) then
begin
if MsgBox('Программа programm используется. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then
begin
KillTask('programm.exe');
Result:= True;
end else
Exit;
end;
Result:=True;
end;
[/SOURCE][/SPOILER]
function RunTask(FileName: AnsiString; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall';
function KillTask(ExeFileName: AnsiString): Integer;
external 'KillTask@files:ISTask.dll stdcall';
function RunTaskU(FileName: AnsiString; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';
function KillTaskU(ExeFileName: AnsiString): Integer;
external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';
//**************************************************//
function InitializeSetup(): Boolean;
begin
if RunTask('Compil32.exe', False) then
begin
if MsgBox('Программа Compil32.exe используется. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then
begin
KillTask('Compil32.exe');
Result := True;
end else
Exit;
end;
Result := True;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
if RunTaskU('Compil32.exe', False) then
begin
// прячем форму
UninstallProgressForm.Hide;
if MsgBox('Программа Compil32.exe используется. Закрыть и продолжить удаление?', mbConfirmation, MB_YESNO) = IDYES then
begin
KillTaskU('Compil32.exe');
UnloadDll(ExpandConstant('{app}\ISTask.dll'));
// показываем форму
UninstallProgressForm.Show;
end
else
begin
MsgBox('Завершите работу Compil32.exe, затем снова запустите программу удаления.', mbInformation, MB_OK);
UnloadDll(ExpandConstant('{app}\ISTask.dll'));
Abort;
end;
end;
end;
[/SOURCE][/SPOILER] Задачка из разряда на сообразительность :)
Спасибо!Задачка из разряда на сообразительность
#ifdef InstallKill
#ifdef InstallKill_1
function KillTask1(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';
function RunTask1(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';
#endif
#ifdef InstallKill_2
function KillTask2(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';
function RunTask2(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';
#endif
#endif
#ifdef InstallKill
function InitializeSetup(): Boolean;
begin
#ifdef InstallKill_1
If RunTask1('Programm1.exe', false) then
begin
if MsgBox('Программа Programm1 используется. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then
begin
KillTask1('Programm1.exe');
Result:= True;
end else
Exit;
end;
Result:=True;
#endif
#ifdef InstallKill_2
If RunTask2('Programm2.exe', false) then
begin
if MsgBox('Программа Programm2 используется. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then
begin
KillTask2('Programm2.exe');
Result:= True;
end else
Exit;
end;
Result:=True;
end;
#endif
#endif
#ifdef UnInstallKill
#ifdef UnInstallKill_1
function RunTask3(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';
function KillTask3(ExeFileName: string): Integer;
external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';
#endif
#ifdef UnInstallKill_2
function RunTask4(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';
function KillTask4(ExeFileName: string): Integer;
external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';
#endif
#endif
#ifdef UnInstallKill
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
#ifdef UnInstallKill_1
if CurUninstallStep = usUninstall then
if RunTask3('Programm1.exe', False) then
begin
// прячем форму
UninstallProgressForm.Visible:= False;
if MsgBox('Программа Programm1.exe используется. Закрыть и продолжить удаление?', mbConfirmation, MB_YESNO) = IDYES then
begin
KillTask3('Programm1.exe');
UnloadDll(ExpandConstant('{app}\ISTask.dll'));
// показываем форму
UninstallProgressForm.Visible:= True;
end
else
begin
MsgBox('Завершите работу Programm1.exe, затем снова запустите программу удаления.', mbInformation, MB_OK);
UnloadDll(ExpandConstant('{app}\ISTask.dll'));
Abort;
end;
#endif
end;
#ifdef UnInstallKill_2
if CurUninstallStep = usUninstall then
if RunTask4('Programm2.exe', False) then
begin
// прячем форму
UninstallProgressForm.Visible:= False;
if MsgBox('Программа Programm2.exe используется. Закрыть и продолжить удаление?', mbConfirmation, MB_YESNO) = IDYES then
begin
KillTask4('Programm2.exe');
UnloadDll(ExpandConstant('{app}\ISTask.dll'));
// показываем форму
UninstallProgressForm.Visible:= True;
end
else
begin
MsgBox('Завершите работу Programm2.exe, затем снова запустите программу удаления.', mbInformation, MB_OK);
UnloadDll(ExpandConstant('{app}\ISTask.dll'));
Abort;
end;
end;
#endif
end;
#endif
[/SOURCE][/SPOILER] и больше никак :(.
'RunTask@files:ISTask.dll
Для деинсталляции нужно вызывать из app'RunTask@files:ISTask.dll
и обрати внимание :KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';
На работе в анси не должно сказаться, а на юникоде работает только с типом AnsiString а не String, поскольку в юникоде String равен WideString а на анси может быть равен и String и AnsiString. В частности - путь к файлам обычно идет в типах AnsiString и PAnsiChar.FileName: AnsiString
Я свой вариант проверил, прежде чем выкладыватьПолучается только так
Ну это я понял. Просто хотел немного скрипт укоротить, т.к на мой взгядЯ свой вариант проверил, прежде чем выкладывать
Вовсе нет. просто инно не хочет делать одинаковые обращения в них, изза чего приходится делать отдельно обращение при установке и отдельное при удалении.являются дубликатами
[Files]
Source: compiler:Dll Pack\ISTask.dll; DestDir: {app}; Flags: dontcopy
Source: compiler:Dll Pack\ISTask.dll; DestDir: {app}; Flags: ignoreversion
исходный файл: Source: compiler:Dll Pack\ISTask.dll;
папка назначения: DestDir: {app};
Не использовать папку назначения(файл не будет распакован) Flags: dontcopy
Т.е в процессе деинсталяции файл ISTask.dll копируестя из папки app в tmp и от туда отрабатывается, так? Это как, пример можно?Это потому, что ты обращаешься к ней. можно попробовать перенести вызов из app в tmp и в начале деинсталляции копировать ее туда.
Всё, понял.Вовсе нет. просто инно не хочет делать одинаковые обращения в них, изза чего приходится делать отдельно обращение при установке и отдельное при удалении.
Чтобы ребята смогли тебе помочь, то укажи, сначала, действия, которые приводят к этой ошибке, например:Как можно решить такую проблему
Посмотреть вложение 176
Это как, пример можно?
function RunTask(FileName: AnsiString; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall';
function KillTask(ExeFileName: AnsiString): Integer;
external 'KillTask@files:ISTask.dll stdcall';
function RunTaskU(FileName: AnsiString; bFullpath: Boolean): Boolean;
external 'RunTask@{tmp}\ISTask.dll stdcall delayload uninstallonly';
function KillTaskU(ExeFileName: AnsiString): Integer;
external 'KillTask@{tmp}\ISTask.dll stdcall delayload uninstallonly';
//**************************************************//
function InitializeSetup(): Boolean;
begin
if RunTask('Compil32.exe', False) then
begin
if MsgBox('Программа Compil32.exe используется. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then
begin
KillTask('Compil32.exe');
Result := True;
end else
Exit;
end;
Result := True;
end;
function InitializeUninstall(): Boolean;
begin
if not FileExists(ExpandConstant('{tmp}\ISTask.dll')) then
FileCopy(ExpandConstant('{app}\ISTask.dll'),ExpandConstant('{tmp}\ISTask.dll'),False);
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
if RunTaskU('Compil32.exe', False) then
begin
// прячем форму
UninstallProgressForm.Hide;
if MsgBox('Программа Compil32.exe используется. Закрыть и продолжить удаление?', mbConfirmation, MB_YESNO) = IDYES then
begin
KillTaskU('Compil32.exe');
UnloadDll(ExpandConstant('{tmp}\ISTask.dll'));
// показываем форму
UninstallProgressForm.Show;
end
else
begin
MsgBox('Завершите работу Compil32.exe, затем снова запустите программу удаления.', mbInformation, MB_OK);
UnloadDll(ExpandConstant('{tmp}\ISTask.dll'));
Abort;
end;
end;
end;[/SOURCE][/SPOILER] Так у меня нормально отработало.
[quote="nazbek010, post: 9747"]Как с этим быть?[/quote]
Эммм... Может, скрыть одну из кнопок? Как это сделано в изначальном примере к библиотеке. И не нужно спрашивать, где его взять.