-
Content Count
36 -
Joined
-
Last visited
Posts posted by mpmp
-
-
Помогите сделать оповещение о новом выходе сборки
!
Ищи тему мода
Т.к. Больше не поддерживаю, готов продать полностью исходный код модификации. (подробнее в личные сообщения)
Помогите сделать оповещение о новом выходе сборки.
-
Проще картинкам фон изменить.
Ето как ?
-
Кому то нужно этот код, для очистки модов + cache + Updates, без Back up мод:[code] var BackupPage: TWizardPage; DeleteRadioButton: TNewRadioButton; //== създаваме нова функция и присвояваме свойство TNewRadioButton NoneRadioButton: TNewRadioButton; //== създаваме нова функция и присвояваме свойство TNewRadioButton NewCheckBoxClearCache: TNewCheckBox; //== създаваме нова функция и присвояваме свойство TNewCheckBox NewCheckBoxClearUpdate: TNewCheckBox; //== създаваме нова функция и присвояваме свойство TNewCheckBox function BackupCheck(): Boolean; var BackupDescLabel: TLabel; //==създаваме и присвояваме свойство TLabel - за текст BackupDescLabel2: TLabel; //==създаваме и присвояваме свойство TLabel - за текст DeleteDescLabel: TLabel; //==създаваме и присвояваме свойство TLabel - за текст NoneDescLabel: TLabel; //==създаваме и присвояваме свойство TLabel - за текст NewCheckBoxLabelClearCache: TLabel; //==създаваме и присвояваме свойство TLabel - за текст NewCheckBoxLabelClearUpdate: TLabel; //==създаваме и присвояваме свойство TLabel - за текст begin BackupPage:=CreateCustomPage(wpSelectDir, '', ''); //==== Настройки на първия текст над бутоните BackupDescLabel:=TLabel.Create(WizardForm); BackupDescLabel.Parent:=BackupPage.Surface; BackupDescLabel.Left:=30; //==== Настройки на текста над бутоните за изтриване на старите модове: ляво-дясно и горе-долу BackupDescLabel.Top:=10; BackupDescLabel.Width:=BackupPage.SurfaceWidth; BackupDescLabel.Height:=90; BackupDescLabel.AutoSize:=False; BackupDescLabel.Wordwrap:=True; BackupDescLabel.Caption:= 'За да бъдат избегнати проблеми със съвместимостта и конфликти между различните модове и модификации,'#13 'се препоръчва да бъдат изтрити текущите ви модове и модификации от вашия игрови клиент.'; //==== Настройки на първия текст над бутоните BackupDescLabel2:=TLabel.Create(WizardForm); BackupDescLabel2.Parent:=BackupPage.Surface; BackupDescLabel2.Left:=80; //==== Настройки на текста над бутоните за изтриване на старите модове: ляво-дясно и горе-долу BackupDescLabel2.Top:=50; BackupDescLabel2.Width:=BackupPage.SurfaceWidth; BackupDescLabel2.Height:=90; BackupDescLabel2.AutoSize:=False; BackupDescLabel2.Wordwrap:=True; BackupDescLabel2.Font.Style := [fsBold, fsItalic]; BackupDescLabel2.Font.Size:=10; //BackupDescLabel2.Font.Color := clMaroon; BackupDescLabel2.Font.Name := 'Arial'; BackupDescLabel2.Caption:= 'ВНИМАНИЕ!'#13 'Моля, прочетете важната информция по-долу, преди да продължите:'; //==== Настройки на мястото на бутона и текста за изтриване на папката res_mods DeleteRadioButton:=TNewRadioButton.Create(WizardForm); DeleteRadioButton.Parent:=BackupPage.Surface; DeleteRadioButton.Checked:=False; DeleteRadioButton.Left:=80; //==== местене на изтриващия бутон DeleteRadioButton.Top:=100; //120 DeleteRadioButton.Width:=BackupPage.SurfaceWidth; DeleteRadioButton.Font.Style:=[fsBold]; DeleteRadioButton.Font.Size:=10; DeleteRadioButton.Caption:='Изтрий текущите модове и модификации (препоръчително).' //==== Текст на бутона за триене ====\\ DeleteDescLabel:=TLabel.Create(WizardForm); DeleteDescLabel.Parent:=BackupPage.Surface; DeleteDescLabel.Left:=80; //==== местене в ляво-дясно на текста под изтриващия бутон DeleteDescLabel.Top:=DeleteRadioButton.Top + DeleteRadioButton.Height + 4; DeleteDescLabel.Width:=BackupPage.SurfaceWidth; DeleteDescLabel.Height:=40; DeleteDescLabel.AutoSize:=False; DeleteDescLabel.Wordwrap:=True; DeleteDescLabel.Caption:='Инсталатора ще почисти съдържанието на папка "res_mods\{#GameVersion}" от текущите ви модове.'; //==== Настройки на мястото на бутона и текста да не изтрива нищо NoneRadioButton:=TNewRadioButton.Create(WizardForm); NoneRadioButton.Parent:=BackupPage.Surface; NoneRadioButton.Checked:=False; NoneRadioButton.Left:=80; //==== местене на неизтриващия бутон NoneRadioButton.Top:=150; NoneRadioButton.Width:=BackupPage.SurfaceWidth; NoneRadioButton.Font.Style:=[fsBold]; NoneRadioButton.Font.Size:=10; NoneRadioButton.Caption:='Не изтривай текущите модове и модификации.' //==== Текст на неизтриващия бутон ====\\ NoneDescLabel:=TLabel.Create(WizardForm); NoneDescLabel.Parent:=BackupPage.Surface; NoneDescLabel.Left:=80; //==== местене в ляво-дясно на текста под неизтриващия бутон NoneDescLabel.Top:=NoneRadioButton.Top + NoneRadioButton.Height + 4; NoneDescLabel.Width:=BackupPage.SurfaceWidth; NoneDescLabel.Height:=40; NoneDescLabel.AutoSize:=False; NoneDescLabel.Wordwrap:=True; NoneDescLabel.Caption:= 'Инсталаторът ще остави всичко както е, без да трие текущите ви модове.'#13 'Тази опция не е препоръчителна, възможно е да възникнат конфликти.'; //==== Настройки на мястото на бутона и текста за изтриване на КЕША NewCheckBoxClearCache:=TNewCheckBox.Create(WizardForm); NewCheckBoxClearCache.Parent:=BackupPage.Surface; NewCheckBoxClearCache.Checked:=False; NewCheckBoxClearCache.Left:=100; //==== местене на бутона NewCheckBoxClearCache.Top:=225; NewCheckBoxClearCache.Width:=BackupPage.SurfaceWidth; NewCheckBoxClearCache.Font.Style:=[fsBold]; NewCheckBoxClearCache.Font.Size:=9; NewCheckBoxClearCache.Caption:='Изтрий кеша (cache) на играта (препоръчително).' //==== Текст на бутона за триене ====\\ NewCheckBoxLabelClearCache:=TLabel.Create(WizardForm); NewCheckBoxLabelClearCache.Parent:=BackupPage.Surface; NewCheckBoxLabelClearCache.Left:=100; //==== местене в ляво-дясно на текста под изтриващия бутон NewCheckBoxLabelClearCache.Top:=NewCheckBoxClearCache.Top + NewCheckBoxClearCache.Height + 4; NewCheckBoxLabelClearCache.Width:=BackupPage.SurfaceWidth; NewCheckBoxLabelClearCache.Height:=40; NewCheckBoxLabelClearCache.AutoSize:=False; NewCheckBoxLabelClearCache.Wordwrap:=True; NewCheckBoxLabelClearCache.Caption:='Инсталатора ще почисти папката с кеша(cache) на играта ви, без да изтрива'#13 'файла с настройките (preferences.XML).'; //==== Настройки на мястото на бутона и текста за изтриване на папка Updates NewCheckBoxClearUpdate:=TNewCheckBox.Create(WizardForm); NewCheckBoxClearUpdate.Parent:=BackupPage.Surface; NewCheckBoxClearUpdate.Checked:=False; NewCheckBoxClearUpdate.Left:=100; //==== местене на изтриващия бутон NewCheckBoxClearUpdate.Top:=280; NewCheckBoxClearUpdate.Width:=BackupPage.SurfaceWidth; NewCheckBoxClearUpdate.Font.Style:=[fsBold]; NewCheckBoxClearUpdate.Font.Size:=9; NewCheckBoxClearUpdate.Caption:='Изтрий файловете за ъпдейтите в играта ви.' //==== Текст на бутона за триене ====\\ NewCheckBoxLabelClearUpdate:=TLabel.Create(WizardForm); NewCheckBoxLabelClearUpdate.Parent:=BackupPage.Surface; NewCheckBoxLabelClearUpdate.Left:=100; //==== местене в ляво-дясно на текста под изтриващия бутон NewCheckBoxLabelClearUpdate.Top:=NewCheckBoxClearUpdate.Top + NewCheckBoxClearUpdate.Height + 4; NewCheckBoxLabelClearUpdate.Width:=BackupPage.SurfaceWidth; NewCheckBoxLabelClearUpdate.Height:=40; NewCheckBoxLabelClearUpdate.AutoSize:=False; NewCheckBoxLabelClearUpdate.Wordwrap:=True; NewCheckBoxLabelClearUpdate.Caption:='Инсталатора ще почисти папка Updates в играта ви и ще освободи дисково място.'; end; ///=== функцията за изтриване на папката res_mods function DeleteOldMods(): Boolean; begin If DeleteRadioButton.Checked then begin WizardForm.ProgressGauge.Hide; WizardForm.StatusLabel.Caption:='Изтриване на файловете...'; DelTree(ExpandConstant('{app}\res_mods'), True, True, True); CreateDir(ExpandConstant('{app}\res_mods')); CreateDir(ExpandConstant('{app}\res_mods\{#GameVersion}')); WizardForm.ProgressGauge.Show; WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles); end; end; ///=== функцията за КЕША ==== Изтриваме кешовите папки и ги създаваме наново, вече чисти. function ClearCacheCreate(): Boolean; begin If NewCheckBoxClearCache.Checked then begin WizardForm.ProgressGauge.Hide; WizardForm.StatusLabel.Caption:='Трием кеша...'; //=== трие кешовите папки DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\account_caches'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\battle_results'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\custom_data'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\dossier_cache'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\messenger_cache'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\tutorial_cache'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\xvm'), True, True, True); //=== създава ги наново, вече чисти. CreateDir(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\account_caches')); CreateDir(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\battle_results')); CreateDir(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\custom_data')); CreateDir(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\dossier_cache')); CreateDir(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\messenger_cache')); CreateDir(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\tutorial_cache')); CreateDir(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\xvm')); WizardForm.ProgressGauge.Show; WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles); end; end; ///=== функцията да трием и след това създаване наново папка Updates function ClearUpdate(): Boolean; begin If NewCheckBoxClearUpdate.Checked then begin WizardForm.ProgressGauge.Hide; WizardForm.StatusLabel.Caption:='Трием update файловете...'; DelTree(ExpandConstant('{app}\Updates'), True, True, True); //== изтрива я CreateDir(ExpandConstant('{app}\Updates')); //== създава я наново WizardForm.ProgressGauge.Show; WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles); end; end; ///=== процедурите за изпълнение на функциите procedure CurStepChanged(CurStep: TSetupStep); begin If CurStep=ssInstall then begin DeleteOldMods(); ClearCacheCreate(); ClearUpdate(); end; end; procedure InitializeWizard(); begin BackupCheck(); end;
@AtotIK
Вопрос:
Как изменить цвет BackUp страница (верхний код) и добавить картинка ?- 1
-
Вот так прекрасно удаляется:
DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\account_caches'), True, True, True);
Для разных систем {userappdata} имеет разные значения, но дальше игрой создаются папки по такому пути 100%. Возможно с папками обошлись вот так: тык! или ещё инфа.
Перенесли с SSD на другой диск и обманули систему.
Таким образом, работает и удаляет.
Спасибо.
-
Нигде. Должен очищать.
А если так:
DelTree(ExpandConstant('{userappdata}') + '\Roaming\wargaming.net\WorldOfTanks\account_caches', True, True, True); DelTree(ExpandConstant('{userappdata}') + '\Roaming\wargaming.net\WorldOfTanks\battle_results', True, True, True); и т.д.
Нет , не хочет ...
-
Не хочет очистить кэш, где проблема:
[Code] var BackupPage: TWizardPage; DeleteRadioButton, NoneRadioButton: TNewRadioButton; NewCheckBox1: TNewCheckBox; function BackupCheck(): Boolean; var BackupDescLabel, DeleteDescLabel, NewCheckBoxLabel, NoneDescLabel: TLabel; begin BackupPage:=CreateCustomPage(wpSelectDir, '', ''); BackupDescLabel:=TLabel.Create(WizardForm); BackupDescLabel.Parent:=BackupPage.Surface; BackupDescLabel.Left:=30; //==== Настройки на текста над бутоните за изтриване на старите модове: ляво-дясно и горе-долу BackupDescLabel.Top:=20; BackupDescLabel.Width:=BackupPage.SurfaceWidth; BackupDescLabel.Height:=90; BackupDescLabel.AutoSize:=False; BackupDescLabel.Wordwrap:=True; BackupDescLabel.Caption:='За да бъдат избегнати проблеми със съвместимостта и конфликти между различните модове (модификации), '#13'се препоръчва да бъдат изтрити текущите ви модове(модификации) от вашия игрови клиент.' #13#13 'Изберете една от двете опции:'#13'Да бъде изчистена от текущите ви модове, съдържанието на папката "res_mods\{#GameVersion}", или'#13'Да не се изтрива нищо от съдържанието й.'; DeleteRadioButton:=TNewRadioButton.Create(WizardForm); DeleteRadioButton.Parent:=BackupPage.Surface; DeleteRadioButton.Checked:=False; DeleteRadioButton.Left:=100; //==== местене на изтриващия бутон DeleteRadioButton.Top:=140; DeleteRadioButton.Width:=BackupPage.SurfaceWidth; DeleteRadioButton.Font.Style:=[fsBold]; DeleteRadioButton.Font.Size:=9; DeleteRadioButton.Caption:='Изтрий текущите модове (модификации)' //==== Текст на бутона за триене ====\\ DeleteDescLabel:=TLabel.Create(WizardForm); DeleteDescLabel.Parent:=BackupPage.Surface; DeleteDescLabel.Left:=100; //==== местене в ляво-дясно на текста под изтриващия бутон DeleteDescLabel.Top:=DeleteRadioButton.Top + DeleteRadioButton.Height + 4; DeleteDescLabel.Width:=BackupPage.SurfaceWidth; DeleteDescLabel.Height:=40; DeleteDescLabel.AutoSize:=False; DeleteDescLabel.Wordwrap:=True; DeleteDescLabel.Caption:='Инсталатора ще изтрие съдържанието на папката с текущите модове.'; NoneRadioButton:=TNewRadioButton.Create(WizardForm); NoneRadioButton.Parent:=BackupPage.Surface; NoneRadioButton.Checked:=False; NoneRadioButton.Left:=100; //==== местене на неизтриващия бутон NoneRadioButton.Top:=200; NoneRadioButton.Width:=BackupPage.SurfaceWidth; NoneRadioButton.Font.Style:=[fsBold]; NoneRadioButton.Font.Size:=9; NoneRadioButton.Caption:='Не изтривай текущите модове (модификации)' //==== Текст на неизтриващия бутон ====\\ NoneDescLabel:=TLabel.Create(WizardForm); NoneDescLabel.Parent:=BackupPage.Surface; NoneDescLabel.Left:=100; //==== местене в ляво-дясно на текста под неизтриващия бутон NoneDescLabel.Top:=NoneRadioButton.Top + NoneRadioButton.Height + 4; NoneDescLabel.Width:=BackupPage.SurfaceWidth; NoneDescLabel.Height:=40; NoneDescLabel.AutoSize:=False; NoneDescLabel.Wordwrap:=True; NoneDescLabel.Caption:='Инсталаторът ще остави всичко както е, без да трие текущите ви модове.'; NewCheckBox1:=TNewCheckBox.Create(WizardForm); NewCheckBox1.Parent:=BackupPage.Surface; NewCheckBox1.Checked:=False; NewCheckBox1.Left:=100; //==== местене на изтриващия бутон NewCheckBox1.Top:=240; NewCheckBox1.Width:=BackupPage.SurfaceWidth; NewCheckBox1.Font.Style:=[fsBold]; NewCheckBox1.Font.Size:=9; NewCheckBox1.Caption:='Опит за летене' //==== Текст на бутона за триене ====\\ NewCheckBoxLabel:=TLabel.Create(WizardForm); NewCheckBoxLabel.Parent:=BackupPage.Surface; NewCheckBoxLabel.Left:=100; //==== местене в ляво-дясно на текста под изтриващия бутон NewCheckBoxLabel.Top:=NewCheckBox1.Top + NewCheckBox1.Height + 4; NewCheckBoxLabel.Width:=BackupPage.SurfaceWidth; NewCheckBoxLabel.Height:=40; NewCheckBoxLabel.AutoSize:=False; NewCheckBoxLabel.Wordwrap:=True; NewCheckBoxLabel.Caption:='Втори опит за летене' end; function BackupCheck_1(): Boolean; begin If DeleteRadioButton.Checked then begin WizardForm.ProgressGauge.Hide; WizardForm.StatusLabel.Caption:='Изтриване на файловете...'; DelTree(ExpandConstant('{app}\res_mods'), True, True, True); CreateDir(ExpandConstant('{app}\res_mods')); CreateDir(ExpandConstant('{app}\res_mods\{#GameVersion}')); WizardForm.ProgressGauge.Show; WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles); end; end; function ClearCacheCreate(): Boolean; begin If NewCheckBox1.Checked then begin WizardForm.ProgressGauge.Hide; WizardForm.StatusLabel.Caption:='Трием кеша...'; DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\account_caches'), True, True, True); DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\battle_results'), True, True, True); DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\custom_data'), True, True, True); DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\dossier_cache'), True, True, True); DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\messenger_cache'), True, True, True); DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\tutorial_cache'), True, True, True); DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\xvm'), True, True, True); WizardForm.ProgressGauge.Show; WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles); end; end; procedure CurStepChanged(CurStep: TSetupStep); begin If CurStep=ssInstall then begin BackupCheck_1(); ClearCacheCreate(); end; end; procedure InitializeWizard(); begin BackupCheck(); end;
-
mpmp, поверь ты мне: скина хватает и для одного окна установки, для деинсталлятора его прикручивать нет никакого смысла. Это как мёртвому припарка.
#ifdef UNICODE #define A "U" #else #define A "A" #endif [Setup] AppName=ISSkin Example AppVersion=1.0.0.0 DefaultDirName={pf}\ISSkin [Files] Source: "Embedded\ISSkinEx{#A}.dll"; DestDir: "{tmp}"; Flags: dontcopy; Source: "Embedded\Skin.cjstyles"; DestDir: "{tmp}"; Flags: dontcopy; [~~~~~~~~~~~если ты хоть что-то соображаешь, то поймёшь что надо с этим делать~~~~~~~~~~~Code~~~~~~~~~~~если ты хоть что-то соображаешь, то поймёшь что надо с этим делать~~~~~~~~~~~] procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskinex{#A}.dll stdcall'; procedure UnloadSkin(); external 'UnloadSkin@files:isskinex{#A}.dll stdcall'; function ShowWindow(hWnd: Integer; uType: Integer): Integer; external '[email protected] stdcall'; function InitializeSetup(): Boolean; begin ExtractTemporaryFile('Skin.cjstyles'); LoadSkin(ExpandConstant('{tmp}\Skin.cjstyles'), 'NormalBlack.ini'); Result:=True; end; procedure DeinitializeSetup(); begin ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0); UnloadSkin(); end;
Я сейчас понял, именно то, что ты послал меня.
Было неудобно то спросить еще раз и еще раз ...
Теперь получиться отличный дизайнерский установщик.
Еще раз спасибо.
-
Не получается:
#define ISTask "ISTask.dll" [Files] Source: Files\{#ISTask}; Flags: dontcopy [code] //////////==== Проверка правилността на папката на играта - търси ехе файла на WoT ====\\ function NextButtonClick1(CurPageID: Integer): Boolean; begin Result := True; case CurPageID of wpSelectDir: if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin MsgBox('Неправилно указана папката на World of Tanks!', mbError, MB_OK); Result := False; end; end; end; //////////====| До тук са редовете за проверка правилността на папката на играта |====\\ //////====== запущенной игре function KillTask(ExeFileName: string): Integer; external 'KillTask@files:ISTaskU.dll stdcall'; function RunTask(FileName: string; bFullpath: Boolean): Boolean; external 'RunTask@files:ISTaskU.dll stdcall'; function InitializeSetup1(): Boolean; begin If RunTask('WorldOfTanks.exe', false) then begin if MsgBox('ВНИМАНИЕ!' #13 'НЕ рекомендуется устанавливать при запущенной игре.' #13 'Закрыть WorldOfTanks и продолжить установку?', mbError, mb_YesNo) = idYes then begin KillTask('WorldOfTanks.exe'); Result := True; end else Exit; end; Result := True; end; ////////////=== END запущенной игре Function InitializeSetup(): Boolean; begin InitializeSetup1(); InitializeWizard1(); Result := True; end;
-
На примере иконки деинсталлятора:
...
Можно так же:
[Iсons] Name: "{commondesktop}\Название_ярлыка"; Filename: "C:\Windows\программа.exe"; IconFilename: "{app}\Icon.ico"; Check: IconChecker
Ъф корсе
Большое спасибо.
+
И все это из-за этот мод: Один клиент для игры на разных серверах [RU-EU-AISA]
-
@mpmp, если я правильно вас понял, вам нужно что-то типа этого:
[Components] Name: MMP\ZO; Description:1.Zoom.; [Icons] Name: "{commondesktop}\Название_ярлыка"; Filename: "C:\Windows\программа.exe"; Check: IconChecker [Code] Function IconChecker(): Boolean; begin Result := IsComponentSelected('MMP\ZO'); end;
Абсолютно правильно меня поняли, хотя мой русский. :)
Золотой человек.
Большое спасибо.
И еще один вопрос:
Как сделать так, что выбрать (изменить) вида значок ярлыка ?
-
Привет, ребята.
Вопрос от меня:
Как сделать, чтобы файл от выбран и установленной мод, имеет ярлык на рабочий стол ?
Может быть необходимо добавить что-то в [Components] --> Flags:
[Components] Name: MMP\ZO; Description:1.Zoom.; Flags: ???? что-то ?????;
Не следует путаться, я не прошу для этого кода:Потому что в этом варианте, помещаются ярлык всегда, независимо от того установлен или нет данный файл.
[Icons] Name: "{commondesktop}\Название_ярлыка"; Filename: "C:\Windows\программа.exe";
Заранее спасибо.
-
Flags: fixed
Спасибо.
-
-
Не могу понять вроде стоит <showWhenLessInRandom>4</showWhenLessInRandom>,почему флудит в начале боя,а не с 4.
прошу помочь,заранее Спасибо!!!
У меня тоже.
-
Вот такая проблема:
Изменил skin.
Использовал этот script:[Files] Source: Files\skin.cjstyles; DestDir: {app}; Attribs: hidden system Source: Files\ISSkin.dll; DestDir: {app}; Attribs: hidden system [code] procedure LoadSkin(lpszPath: PAnsiChar; lpszIniFileName: PAnsiChar); external 'LoadSkin@{tmp}\isskin.dll stdcall delayload'; procedure UnloadSkin; external 'UnloadSkin@{tmp}\isskin.dll stdcall delayload'; function InitializeSetup: boolean; begin if not FileExists(ExpandConstant('{tmp}\isskin.dll')) then ExtractTemporaryFile('isskin.dll'); if not FileExists(ExpandConstant('{tmp}\skin.cjstyles')) then ExtractTemporaryFile('skin.cjstyles'); LoadSkin(ExpandConstant('{tmp}\skin.cjstyles'), ''); Result:=True; end; function InitializeUninstall: boolean; begin FileCopy(ExpandConstant('{app}\uninstall\isskin.dll'), ExpandConstant('{tmp}\isskin.dll'), False); FileCopy(ExpandConstant('{app}\uninstall\skin.cjstyles'), ExpandConstant('{tmp}\skin.cjstyles'), False); LoadSkin(ExpandConstant('{tmp}\skin.cjstyles'), ''); Result:=True; end;
Стало хорошо, но после попытки Uninstall мод пакет, дает эту ошибку и не удаляет пакета:
А ето мой основной:
-
Это производит очисту папки ?
function DeleteMods(): Boolean;begin
If NewCheckBox1.Checked then
begin
DelTree(ExpandConstant('{app}\res_mods\{#Patch}'), True, True, True);
DelTree(ExpandConstant('{app}\res_mods\xvm'), True, True, True);
CreateDir(ExpandConstant('{app}\res_mods\{#Patch}'));
end;
end;
спасибо!
Я би менял так:
function DeleteMods(): Boolean; begin If NewCheckBox1.Checked then begin DelTree(ExpandConstant('{app}\res_mods'), True, True, True); CreateDir(ExpandConstant('{app}\res_mods')); CreateDir(ExpandConstant('{app}\res_mods\{#Patch}')); end; end;
EDIT: Если вы хотите установщик поставить удаления в отдельной папке игры:
#define UninstallFilesDir "Имя папке вашего деинсталлятора" [Setup] UninstallFilesDir={app}\{#UninstallFilesDir}
-
-
-
Может и проще. Музыку вообще в одну строчку можно добавить (играет и играет себе фоном, без всяких кнопок вкл/выкл), но тогда я вообще мало что смыслил в Inno. Это все пробы и изучение программы. Я ведь только учусь :-)
А за код спасибо. Можно и пригодится куда-нибудь.
Я тоже учусь.
Уважаемые, вот что получилась с вашей помощью.
Надеюсь поможет вам в создании своей сборки.
Мой проект: LINK - DOWNLOAD
Есть фотографии модов, есть музыка.
Спасибо за помощью EvilAlex и Atotik.
Не удалось сделать описания модов и музыку кнопок вкл/выкл.
-
Разобрался, как запускается музыка в скрипте из поста от Ckaym. В данном виде, как он выложен, скрипт не работает.
Нашел одну ошибку в нем: тип PChar (он не поддерживается прогой) надо заменить на тип PAnsiChar. И тогда он начинает работать.
Вот такая штука получилась в результате для запуска музыки при старте инсталлятора. Гляньте, уважаемый. Комментарии и корректировки будут?
//подключаем ресурсы и библиотеки\\
[Files]
Source: "bass.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "innocallback.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "Music.MP3"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
//задаем процедуры, переменные и константы\\typeHSTREAM=DWORD;TTimerProc=procedure(uTimerID,uMessage:UINT;dwUser,dw1,dw2:DWORD);constIndent=25;varMP3List:TStringList;CurrentMP3:integer;hMP3:HWND;TimerID:LongWord;//создаем функции\\function SetTimer(hWnd:HWND;nIDEvent,uElapse:UINT;lpTimerFunc:LongWord{TFNTimerProc}):UINT; external '[email protected] stdcall delayload';function BASS_ChannelIsActive(Handle:HWND):DWORD; external 'BASS_ChannelIsActive@files:bass.dll stdcall';function BASS_SetConfig(Option,Value:DWORD):DWORD; external 'BASS_SetConfig@files:bass.dll stdcall';function BASS_Init(Device:integer;Freq,Flags:DWORD;Win:HWND;CLSID:integer):boolean; external 'BASS_Init@files:bass.dll stdcall delayload';function BASS_StreamCreateFile(Mem:BOOL;f:PAnsiChar;Offset:DWORD;Length:DWORD;Flags:DWORD):HSTREAM; external 'BASS_StreamCreateFile@files:bass.dll stdcall';function BASS_StreamFree(Handle:HWND):boolean; external 'BASS_StreamFree@files:bass.dll stdcall';function BASS_ChannelPlay(Handle:HWND;Restart:boolean):boolean; external 'BASS_ChannelPlay@files:bass.dll stdcall';function BASS_Start: Boolean; external 'BASS_Start@files:bass.dll stdcall';function BASS_Stop: Boolean; external 'BASS_Stop@files:bass.dll stdcall';
function BASS_Free: Boolean; external 'BASS_Free@files:bass.dll stdcall delayload';
function WrapTimerProc(CallBack:TTimerProc;ParamCount:integer):LongWord; external 'wrapcallback@files:innocallback.dll stdcall';
//ну, и сам код запуска музыки\\
procedure TimerTick(uTimerID,uMessage:UINT;dwUser,dw1,dw2:DWORD);
begin
if BASS_ChannelIsActive(hMP3)=0 then begin
BASS_Stop;
BASS_StreamFree(hMP3);
hMP3:=BASS_StreamCreateFile(False,PAnsiChar(MP3List.Strings[CurrentMP3]),0,0,0);
BASS_Start;
if hMP3<>0 then
if BASS_ChannelPlay(hMP3,True) then begin
CurrentMP3:=CurrentMP3+1;
if CurrentMP3>MP3List.Count-1 then CurrentMP3:=0;
end;
end;
end;
function InitializeSetup:boolean;
begin
ExtractTemporaryFile('Music.MP3');
MP3List:=TStringList.Create;
MP3List.Add(ExpandConstant('{tmp}')+'\Music.MP3');
CurrentMP3:=0;
Result:=True;
end;
procedure InitializeWizard;
begin
TimerID:=SetTimer(0,0,500,WrapTimerProc(@TimerTick,5));
BASS_Init(-1,44100,0,0,0);
BASS_SetConfig(5,100);
BASS_SetConfig(6,100);
end;
procedure DeinitializeSetup;
begin
BASS_Stop;
BASS_Free;
MP3List.Free;
end;
Это решение не проще?
-
-
Ставлю в секцию [ code ]И оно ругается
Хоть я и сам много прошу,но ты ОЧЕНЬ сильно наглеешь,успокойся
Мой код должен быть вставлен в код AtotIK.
Я не могу это объяснить в двух словах.
Просто посмотрите на ссылки.
- 1
-
-
Как ты изменил размеры этого компонента?
//====={ Настройки на страниците )=====\\ with WizardForm.Bevel do begin Top := ScaleY(393); Width := ScaleX(705); Height := ScaleY(82); end; with WizardForm.CancelButton do begin Left := ScaleX(512); Top := ScaleY(416); end; with WizardForm.NextButton do begin Left := ScaleX(423); Top := ScaleY(416); end; with WizardForm.BackButton do begin Left := ScaleX(340); Top := ScaleY(416); end; with WizardForm.OuterNotebook do begin Width := ScaleX(705); Height := ScaleY(393); end; with WizardForm.WizardBitmapImage do begin Left := ScaleX(-40); Top := ScaleY(-16); Width := ScaleX(652); Height := ScaleY(402); end; with WizardForm.WelcomeLabel2 do begin Enabled := False; Left := ScaleX(112); Top := ScaleY(135); end; with WizardForm.WelcomeLabel1 do begin Enabled := False; Left := ScaleX(72); Top := ScaleY(40); end; with WizardForm.Bevel1 do begin Top := ScaleY(57); Height := ScaleY(17); end; with WizardForm.InnerNotebook do begin Left := ScaleX(8); Top := ScaleY(64); Width := ScaleX(697); Height := ScaleY(341); end; with WizardForm.LicenseNotAcceptedRadio do begin Left := ScaleX(16); Top := ScaleY(304); end; with WizardForm.LicenseAcceptedRadio do begin Left := ScaleX(16); Top := ScaleY(284); end; with WizardForm.LicenseMemo do begin Left := ScaleX(8); Width := ScaleX(577); Height := ScaleY(244); end; with WizardForm.LicenseLabel1 do begin Left := ScaleX(16); Width := ScaleX(569); Height := ScaleY(35); end; with WizardForm.PasswordEdit do begin Left := ScaleX(72); end; with WizardForm.PasswordEditLabel do begin Left := ScaleX(72); end; with WizardForm.PasswordLabel do begin Left := ScaleX(72); end; with WizardForm.InfoBeforeMemo do begin Left := ScaleX(8); Top := ScaleY(40); Width := ScaleX(585); Height := ScaleY(277); end; with WizardForm.InfoBeforeClickLabel do begin Left := ScaleX(16); Width := ScaleX(569); Height := ScaleY(30); end; with WizardForm.UserInfoSerialEdit do begin Left := ScaleX(104); Width := ScaleX(409); end; with WizardForm.UserInfoSerialLabel do begin Left := ScaleX(104); end; with WizardForm.UserInfoOrgEdit do begin Left := ScaleX(104); end; with WizardForm.UserInfoOrgLabel do begin Left := ScaleX(104); end; with WizardForm.UserInfoNameEdit do begin Left := ScaleX(104); end; with WizardForm.UserInfoNameLabel do begin Left := ScaleX(104); end; with WizardForm.SelectDirBitmapImage do begin Left := ScaleX(56); Top := ScaleY(25); Width := ScaleX(40); Height := ScaleY(38); end; with WizardForm.DiskSpaceLabel do begin Left := ScaleX(56); Top := ScaleY(208); Width := ScaleX(497); Height := ScaleY(38); end; with WizardForm.DirBrowseButton do begin Left := ScaleX(478); Top := ScaleY(149); end; with WizardForm.DirEdit do begin Left := ScaleX(56); Top := ScaleY(149); Width := ScaleX(417); end; with WizardForm.SelectDirBrowseLabel do begin Left := ScaleX(56); Top := ScaleY(76); Width := ScaleX(497); Height := ScaleY(70); end; with WizardForm.SelectDirLabel do begin Left := ScaleX(100); Top := ScaleY(25); Width := ScaleX(453); Height := ScaleY(46); end; //====={ Прозореца с избора на модовете }=====\\ with WizardForm.ComponentsDiskSpaceLabel do begin Left := ScaleX(8); Top := ScaleY(312); end; with WizardForm.ComponentsList do begin Left := ScaleX(0); //== разстоянието от ляво. Top := ScaleY(37); //== разстоянието от горе. Width := ScaleX(345); //== широчина на прозореца. 315 Height := ScaleY(272); //== височина на прозореца. end; with WizardForm.TypesCombo do begin Left := ScaleX(8); Width := ScaleX(577); Enabled := False; end; with WizardForm.SelectComponentsLabel do begin Left := ScaleX(8); Top := ScaleY(8); Width := ScaleX(569); end; with WizardForm.SelectGroupBitmapImage do begin Left := ScaleX(120); end; with WizardForm.NoIconsCheck do begin Left := ScaleX(120); end; with WizardForm.GroupBrowseButton do begin Left := ScaleX(462); Top := ScaleY(66); end; with WizardForm.GroupEdit do begin Left := ScaleX(120); end; with WizardForm.SelectStartMenuFolderBrowseLabel do begin Left := ScaleX(120); end; with WizardForm.SelectStartMenuFolderLabel do begin Left := ScaleX(164); end; with WizardForm.TasksList do begin Left := ScaleX(88); Top := ScaleY(69); end; with WizardForm.SelectTasksLabel do begin Left := ScaleX(88); Top := ScaleY(32); end; with WizardForm.ReadyMemo do begin Left := ScaleX(8); Top := ScaleY(16); Width := ScaleX(577); Height := ScaleY(309); end; with WizardForm.ReadyLabel do begin Left := ScaleX(8); Width := ScaleX(569); end; with WizardForm.PreparingErrorBitmapImage do begin Left := ScaleX(40); end; with WizardForm.PreparingLabel do begin Left := ScaleX(64); end; with WizardForm.PreparingYesRadio do begin Left := ScaleX(64); Top := ScaleY(257); end; with WizardForm.PreparingNoRadio do begin Left := ScaleX(64); Top := ScaleY(279); end; with WizardForm.PreparingMemo do begin Left := ScaleX(64); end; with WizardForm.FilenameLabel do begin Left := ScaleX(104); Top := ScaleY(48); end; with WizardForm.StatusLabel do begin Left := ScaleX(104); Top := ScaleY(16); end; with WizardForm.ProgressGauge do begin Left := ScaleX(104); Top := ScaleY(82); end; with WizardForm.InfoAfterMemo do begin Left := ScaleX(8); Top := ScaleY(32); Width := ScaleX(577); Height := ScaleY(293); end; with WizardForm.InfoAfterClickLabel do begin Left := ScaleX(8); Width := ScaleX(577); Height := ScaleY(30); end; with WizardForm.MainPanel do begin Width := ScaleX(609); end; with WizardForm.WizardSmallBitmapImage do begin Left := ScaleX(0); Top := ScaleY(2); Width := ScaleX(607); end; with WizardForm.PageDescriptionLabel do begin Left := ScaleX(104); Top := ScaleY(10); Width := ScaleX(373); end; with WizardForm.PageNameLabel do begin Left := ScaleX(88); end; with WizardForm.WizardBitmapImage2 do begin Width := ScaleX(610); Height := ScaleY(450); end; with WizardForm.RunList do begin Top := ScaleY(172); end; //==== Край на настройки на страниците =====\\
Настоящий мод WGL
in Mods and Software
Posted
Уже сделан, красавчик. Что вы ждете ...
https://youtu.be/ydjAjcbznws
https://youtu.be/osdlb1Bu9NY