Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 7]

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 7]

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1274
Благодарности: 1030


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:

Показать/скрыть: Ссылки на примеры скриптов:

Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;

  • RegExporter - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.2.0 [23.09.2014] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6]

Отправлено: 11:48, 10-03-2014

 

Пользователь


Сообщения: 119
Благодарности: 0

Профиль | Отправить PM | Цитировать


Shkutu, добавил это в свой скрипт. Чекбоксы появились, но функции не работают.

Отправлено: 18:09, 22-05-2014 | #731



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 68
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Dodakaedr, ДА пробовал, ошибка уже получается на
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\Splash piratbit.png',700,1000,700,0,255,False,$FFFFFF,10);

Последний раз редактировалось Антон_Мураткин@vk, 22-05-2014 в 18:29.


Отправлено: 18:10, 22-05-2014 | #732


Пользователь


Сообщения: 149
Благодарности: 38

Профиль | Отправить PM | Цитировать


Приветствую всех!
Ситуация следующая: в коде используется функция из dll. Выглядит примерно так
Код: Выделить весь код
[Files]
...
Source: "mslib.dll"; Flags: dontcopy
Source: "dblib.dll"; Flags: dontcopy
Source: "libiconv.dll"; Flags: dontcopy
;2 последние длл требуются для работы функции из 1й длл, я их просто кладу рядом с 1й 

[Сode]

function GetCRMUserGuid(dbname, host, user, pass:PansiChar):PansiChar; 
 external 'GetCRMUserGuid@files:mslib.dll stdcall delayload setuponly';

procedure InitializeWizard;
var s: string;
begin
 ExtractTemporaryFile('dblib.dll');
 ExtractTemporaryFile('libiconv.dll');
 s:=GetCRMUserGuid('DB', '127.0.0.1:1433', 'sa', '111');
...
end;
Когда доходит до строчки, где происходит вызов функции, падает с ошибкой "Could not call proc". Похоже на ошибку инициализации, но если смотреть в дебагере, то на этот момент все длл уже извлечены.
Не подскажете, в чем может быть проблема?

Антон_Мураткин@vk,
читать дальше »

не очень понимаю, в чем проблема скопировать то, что в функции в 1м тексте между begin и end и вставить в procedure InitializeWizard из второго текста?
Код: Выделить весь код
procedure InitializeWizard;

begin
  ExtractTemporaryFile('BASS.dll');
  ExtractTemporaryFile('CallbackCtrl.dll');
  ExtractTemporaryFile('botva2.dll');
  ExtractTemporaryFile('MusicButton.png');
  ExtractTemporaryFile('Music.mp3');

  BASS_Init('{tmp}\Music.mp3') //Çàïóñêàåì ìóçûêó
  //Ìîæíî äîáàâèòü â èíñòàëë íåñêîëüêî ïåñåí
  //BASS_Init(ExpandConstant('{tmp}\*'))        //Ïîèñê ïî ìàñêå
  BASS_CreateOnOffButton(WizardForm, '{tmp}\MusicButton.png', 20, 320, 36, 36, 4) //Ñîçäàåì êíîïêó  âêë/âûêë
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\Splash piratbit.png',700,1000,700,0,255,False,$FFFFFF,10);

ExtractTemporaryFile('Splash WhiteSmoke.png');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\Splash WhiteSmoke.png',700,1000,700,0,255,False,$FFFFFF,10);

ExtractTemporaryFile('Splash Game.png');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\Splash Game.png',700,1000,700,0,255,False,$FFFFFF,10);
WizardForm.Position:=poScreenCenter;
IsMyFont;
wzform;
btn;
welcom;
SelectDir;
Components;
ProgramGroup;
ProgramTask;
CreateControls;
Finish;
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall delayload setuponly';
procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall delayload setuponly';

procedure LoadSkinU(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly';
procedure UnloadSkinU(); external 'UnloadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly';


function InitializeSetup:boolean;
var
  ResCode: integer;
begin
  ExtractTemporaryFile('Skin.cjstyles');
  LoadSkin(ExpandConstant('{tmp}\Skin.cjstyles'), '');
  Result:= true

  if not FileExists(ExpandConstant('{tmp}\b2p.dll')) then ExtractTemporaryFile('b2p.dll');
  if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
  ExtractTemporaryFile('IsMyFont.dll');
  Result:=True;
end;
Не уверена, что вставлять надо именно в начало, ибо не знаю, что за функции у вас используются и, соответственно, в каком порядке их лучше выполнять.

Kashtan007,
читать дальше »
не понимаю, какие функции вы имеете в виду?
Вы просили добавить чекбоксов, в моем примере как раз это. Их обработку надо прописывать отдельно. Выглядеть может примерно так:
Код: Выделить весь код
procedure CurStepChanged (CurStep: TSetupStep);
begin
 if (CurStep==ssInstall) then
 begin
    if BackupCheck.Checked then
   begin
     //бэкапите старые моды
   end;
   if ModCheck.Checked then
    begin
      //Удаляете старые моды
    end;
 end;
end;

Последний раз редактировалось Shkutu, 22-05-2014 в 18:21.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:12, 22-05-2014 | #733


Пользователь


Сообщения: 119
Благодарности: 0

Профиль | Отправить PM | Цитировать


Shkutu, спасибо.
Я указывал, что мне нужно не только чекбоксы а еще чтобы они выполняли функции. Удаления и бекапа.

Есть ли полный код на бекап папки и удаление папки. Заранее спасибо!

Отправлено: 18:25, 22-05-2014 | #734


Пользователь


Сообщения: 68
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Shkutu, Если было бы так просто я бы не написал чтобы помогли. Пробовал я так ошибка идёт на end;

Отправлено: 18:32, 22-05-2014 | #735


Пользователь


Сообщения: 149
Благодарности: 38

Профиль | Отправить PM | Цитировать


Kashtan007, у меня к сожаление полного кода на подобные вещи нету. Попробуйте поискать по форуму, потому что, насколько я помню, подобный вопрос уже обсуждался.
http://forum.oszone.net/post-2307050-2242.html - здесь что-то похожее, но можно еще поискать.
Антон_Мураткин@vk,
читать дальше »
хм.. я копировала не глядя, так что в моем примере не хватает нескольких точек с запятой. Если их добавить, то на end; ругаться не должен. И извините за возможно глупый вопрос, но у вас точно все необходимые функции объявлены? Просто в вашем примере объявлено всего несколько функций, а используется их гораздо больше. И тот факт, что компилятор на них ругается, чаще говорит о том, что функции не объявлены. А вообще, вы бы хоть тект ошибки приводили, а то "получается ошибка" это как-то расплывчато.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:52, 22-05-2014 | #736


Пользователь


Сообщения: 119
Благодарности: 0

Профиль | Отправить PM | Цитировать


Shkutu, ок спасибо поищу.

Отправлено: 18:55, 22-05-2014 | #737


Пользователь


Сообщения: 87
Благодарности: 1

Профиль | Отправить PM | Цитировать


Всем привет)) Вроде бы немного научилась создавать установщики. Но опять возникли трудности. Объясню на примере. Есть игровая компания Game Net. При установке их игр, сначала устанавливается игровой клиент GameNet, а через него уже грузится игра. Подскажите пожалуйста, как создавать такие установщики? Пробовала отдельно делать установщик GameNet и установщик нужной мне игры. Но они естественно друг друга не видят. То есть, если зайти в клиент GameNet, то он просто начинает загружать игру снова. Клиент же самой игры так же работает не корректно.

Другой пример. Игры от компании Game XP. Тут в принципе так же, сначала устанавливается клиент Game XP, а из него уже–игра. Сделала установщик самой игры. Игра запускается только если запускать ее из папки с игрой. Если же запускать с рабочего стола, то постоянно не хватает какого то файла ***.dll и игра не запускается. Если поместить этот ***.dll на рабочий стол, то требует какого то другого ***.dll. В общем как то так И как с этим бороться не знаю, и в инете что то ничего не могу найти по этому поводу.

Отправлено: 19:19, 22-05-2014 | #738


Аватара для audiofeel

Пользователь


Сообщения: 128
Благодарности: 22

Профиль | Отправить PM | Цитировать


Цитата Irenis:
То есть, если зайти в клиент GameNet, то он просто начинает загружать игру снова. Клиент же самой игры так же работает не корректно. »
надо наверняка отследить какие изменения вносит в реестр веб установщик- (я делаю так, просто в реестре ищу по поиску искомое значение -например название издателя или название самой игры)
Цитата Irenis:
Игра запускается только если запускать ее из папки с игрой. Если же запускать с рабочего стола, то постоянно не хватает какого то файла ***.dll и игра не запускается. Если поместить этот ***.dll на рабочий стол, то требует какого то другого ***.dll. В общем как то так И как с этим бороться не знаю, и в инете что то ничего не могу найти по этому поводу. »
было у меня такое года 3 -4 назад, со сталкером, нужно было "правильно" указать рабочую папку для файла запуска, в свойствах ярлыка (проще говоря изменить ее)
параметр = WorkingDir: {app} указывает на то, что рабочая папка для создаваемого ярлыка будет как и по умолчанию, то есть это папка приложения, но во многих играх особенно на движке unreal, папка где хранится файл запуска находится в подпапке, обычно Bin, Binaries и тд

[Icons]

Name: {userdesktop}\Название игры; Filename: {app}\файл запуска игры; WorkingDir: место где расположен файл запуска игры

Последний раз редактировалось audiofeel, 22-05-2014 в 20:34.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:57, 22-05-2014 | #739


Пользователь


Сообщения: 87
Благодарности: 1

Профиль | Отправить PM | Цитировать


audiofeel, спасибо Только вроде бы и понятно, но не совсем. Я честно говоря, обычно создаю установщик через мастера, а в получившемся скрипте уже дописываю то что мне нужно, точнее копирую и вставляю необходимые коды. У меня сейчас вот так

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon

То есть ничего не убирать, а просто ниже дописать эту строчку?
Игра World of Dragons. Значит просто написать World of Dragons?
Не совсем поняла, что писать там, где файл запуска игры.
Место где расположен файл запуска игры: "C:\GameXP\AccessPoint\installed\World of Dragons\WOD.exe". То есть так и прописать путь?

Отправлено: 21:24, 22-05-2014 | #740



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 7]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34




 
Переход