Jump to content
Korean Random

Создание инсталляторов для модпаков на базе Inno Setup


Recommended Posts

что бы весело удаляли

Делается по типу того, как и в визарде. Только в визарде используются: IniializeSetup, InitializeWizard, DeinitializeSetup; а в деинсталляции будут: InitializeUninstall, InitializeUninstallProgressForm, DeinitializeUninstall соответственно.

Edited by Kotyarko_O
Link to comment
Short link
Share on other sites

Делается по типу того, как и в визарде. Только в визарде используются: IniializeSetup, InitializeWizard, DeinitializeSetup; а в деинсталляции будут: InitializeUninstall, InitializeUninstallProgressForm, DeinitializeUninstall соответственно.

понял

Link to comment
Short link
Share on other sites

понял

А ещё библиотеку проигрывания (вроде, с самой музыкой) надо будет хранить в папке с деинсталлятором. В общем, так же запихнуть эти файлы в деинсталлятор, как это делается с инсталлятором, не выйдет.

 

Так что преимуществ у этой идеи нет. Одни недостатки (хранение лишних документов в папке - лишний мусор, никто и не оценит, никому и не интересно, лишний код), реализация того не стоит.

Edited by Kotyarko_O
Link to comment
Short link
Share on other sites

А ещё библиотеку проигрывания (вроде, с самой музыкой) надо будет хранить в папке с деинсталлятором. В общем, так же запихнуть эти файлы в деинсталлятор, как это делается с инсталлятором, не выйдет.

 

Так что преимуществ у этой идеи нет. Одни недостатки (хранение лишних документов в папке - лишний мусор, никто и не оценит, никому и не интересно, лишний код), реализация того не стоит.

я так ради интереса попробую :)

Link to comment
Short link
Share on other sites

"Ради интереса" это делается копированием куска кода и заменой названий процедур - всё.

Разве всё?

Мне казалось, что потребуются внешние файлы (библиотека для проигрывания и сама музыка). Деинсталлятор не кушает секцию [Files] или я ошибаюсь?

Edited by Kotyarko_O
Link to comment
Short link
Share on other sites

Подскажите как впихнуть ссылку вида   <a href="длииииииинная ссылка">ссылка</a>

вот сюда:

procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_SYSCOMMAND then
if Msg.wParam = Menu.Handle then
MessageBox(WizardForm.Handle, 'bla-bla-bla' +#13+ 'ССЫЛКА','О программе', MB_ICONINFORMATION);
end;

тут кому надо весь пример по Замена меню "О программе"

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes
 
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
 
[_Code]
function AppendMenu(hMenu: HMENU; uFlags, uIDNewItem: UINT; lpNewItem:  PAnsiChar): BOOL; external '[email protected] stdcall';
function GetSystemMenu(hWnd: HWND; bRevert: BOOL): HMENU; external '[email protected] stdcall';
function MessageBox(hWnd: HWND; lpText, lpCaption: PAnsiChar; uType: LongWord): Integer;  external '[email protected] stdcall';
 
const
WM_SYSCOMMAND = $0112;
MF_DELETE = $200;
MF_SEPARATOR = $800;
MF_BYPOSITION = $400;
 
var
Menu: TMenuItem;
 
procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_SYSCOMMAND then
if Msg.wParam = Menu.Handle then
MessageBox(WizardForm.Handle,'bla-bla-bla','О программе', MB_ICONINFORMATION);
end;
 
procedure InitializeWizard();
begin
// попытаемя удалить родное меню 'О программе'
if not AppendMenu(GetSystemMenu(Wizardform.Handle, True), MF_DELETE, 0, SetupMessage(msgAboutSetupMenuItem)) then
WizardForm.Position:= poScreenCenter;
// создаём сепаратор
AppendMenu(GetSystemMenu(Wizardform.Handle, False), MF_SEPARATOR, 0, '');
Menu:= TMenuItem.Create(WizardForm); // создаём ссылку на менюшку
// добавляем свой пункт в системное меню 'О программе'
AppendMenu(GetSystemMenu(Wizardform.Handle, False), MF_BYPOSITION, Menu.Handle, SetupMessage(msgAboutSetupMenuItem));
Application.OnMessage:= @AppOnMessage;
end; 

Edited by -zav-
Link to comment
Short link
Share on other sites

Подскажите как впихнуть ссылку вида   <a href="длииииииинная ссылка">ссылка</a>

вот сюда:

procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_SYSCOMMAND then
if Msg.wParam = Menu.Handle then
MessageBox(WizardForm.Handle, 'bla-bla-bla' +#13+ 'ССЫЛКА','О программе', MB_ICONINFORMATION);
end;

Никак. Внутри мсджбокса ссылку не вставишь, нужно создавать форму, похожую на мсджбокс и делать с ней всё, что хочется.

 

из за чего может быть?

40 сек пройдет и вылет

Из-за чего-угодно. Постоянно одно и то же время проходит до вылета?

Edited by Kotyarko_O
Link to comment
Short link
Share on other sites

 

 

Никак. Внутри мсджбокса ссылку не вставишь, нужно создавать форму, похожую на мсджбокс и делать с ней всё, что хочется.

Пичалька. Для сообщалки "о программе" это будет слишком жирно разводить такую канитель ради ссылки...

Link to comment
Short link
Share on other sites

Никак. Внутри мсджбокса ссылку не вставишь, нужно создавать форму, похожую на мсджбокс и делать с ней всё, что хочется.

 

Из-за чего-угодно. Постоянно одно и то же время проходит до вылета?

да 

Link to comment
Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...