| 
| 
 | Вопрос # 1 382/ вопрос решён / | 
 |  Здравствуйте! Уважаемые експерты!У меня пришла мысль создать программу  что-то вроде инсталятора с удобным интерфейсом. Так вот я незнаю как сделать чтобы у меня при нажатии на кнопку установить при выборе программы  он у меня устанавливал ее.
 К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса) 
|  |   Вопрос задал: NPC (статус: Посетитель)Вопрос отправлен: 27 февраля 2008, 18:06
 Состояние вопроса: решён, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Feniks Здравствуйте, NPC!На нашем портале есть замечатальная статья "Написание инсталлятора на Delphi". Почитайте ее. Я думаю она вам поможет.
 Желаю удачи.
 
|  | Ответ отправил: Feniks (статус: Бакалавр)Время отправки: 27 февраля 2008, 18:17
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо огромное Уважаемывй Feniks Я Очень рад что вы помогли мне (новичку на сайте ) Освоиться на нем и ответить  на мой долгожданный вопрос . P.s У вас замечательные експерты  я получил ответ мгновенно ) |  Ответ #2. Отвечает эксперт: Drozdov D.V. Здравствуйте, NPC!Вот вам мини инстолятор. Переделаный из моего шуточного.
 Состоит из 2 форм исходники прилогаются. Можно добавить запись в реестр.
 Об расширении вайла используемой прогой или если создаёт.
 Прописать в меню и автозапуске.
 Удачи!
 Приложение:Переключить в обычный режим unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, ExtCtrls, Gauges, StdCtrls, Buttons,ShellAPI,  MPlayer,MMSystem, XPMan; type  TForm1 = class(TForm)    Button1: TButton;    Label1: TLabel;    Label2: TLabel;    Gauge1: TGauge;    Timer1: TTimer;    StaticText1: TStaticText;    StaticText2: TStaticText;    Button2: TButton;    Edit1: TEdit;    StaticText3: TStaticText;    BitBtn1: TBitBtn;    XPManifest1: TXPManifest;    procedure Timer1Timer(Sender: TObject);    procedure Button1Click(Sender: TObject);    procedure Button2Click(Sender: TObject);    procedure BitBtn1Click(Sender: TObject);    procedure FormCreate(Sender: TObject);   private    { Private declarations }   public    { Public declarations }  end;   type   TBuffer = array of Char; var  Form1: TForm1;  a,b:integer;  OpStruc: TSHFileOpStruct;  frombuf, tobuf: Array [0..128] of Char; implementation uses Unit2; {$R *.dfm} // OBRABOTKAprocedure TForm1.Timer1Timer(Sender: TObject);begin if b=1 then begin a:=a+1; end;Gauge1.Progress := a;  end;  begin FillChar( frombuf, Sizeof(frombuf), 0 );FillChar( tobuf, Sizeof(tobuf), 0 ); StrPCopy( frombuf, 'datares*.*' );StrPCopy( tobuf, edit1.Text );with OpStruc do begin   Wnd := Handle;   wFunc := FO_COPY;   pFrom := @frombuf;   pTo := @tobuf;   fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;   fAnyOperationsAborted := False;   hNameMappings := Nil;   lpszProgressTitle := Nil;end;ShFileOperation( OpStruc );end; end;  end;If a=90 then begin  end; If a=145 then begin//-----------------------------Form2.Visible := true;//-----------------------------end; If a=155 Then begin   else  if a=160 thenbegin end; if a=200 thenbeginClose;end;  end; end; procedure TForm1.Button1Click(Sender: TObject);begin b:=1;end; procedure TForm1.Button2Click(Sender: TObject);beginif b=1 then begin b:=1;end;  end;  procedure TForm1.BitBtn1Click(Sender: TObject);begin end; procedure xex;beginexit;end;  procedure TForm1.FormCreate(Sender: TObject);beginPostMessage(Application.Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 1); end; end. /////////////////////////////////////-------------------------------------unit Unit2; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, Gauges, StdCtrls, ExtCtrls, ComCtrls; type  TForm2 = class(TForm)    RadioGroup1: TRadioGroup;    Button1: TButton;    RadioButton1: TRadioButton;    RadioButton2: TRadioButton;    RadioButton3: TRadioButton;    Panel1: TPanel;    Memo1: TMemo;    procedure Button1Click(Sender: TObject);    procedure RadioButton1Click(Sender: TObject);    procedure RadioButton2Click(Sender: TObject);    procedure RadioButton3Click(Sender: TObject);    procedure FormCreate(Sender: TObject);   private    { Private declarations }  public    { Public declarations }  end; var  Form2: TForm2;   c,d:integer;implementation {$R *.dfm}function MyExitWindows(RebootParam: Longword): Boolean;varTTokenHd: THandle;TTokenPvg: TTokenPrivileges;cbtpPrevious: DWORD;rTTokenPvg: TTokenPrivileges;pcbtpPreviousRequired: DWORD;tpResult: Boolean;constSE_SHUTDOWN_NAME = 'SeShutdownPrivilege';beginif Win32Platform = VER_PLATFORM_WIN32_NT thenbegin   tpResult := OpenProcessToken(GetCurrentProcess(),     TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,     TTokenHd);   if tpResult then   begin     tpResult := LookupPrivilegeValue(nil,                                      SE_SHUTDOWN_NAME,                                      TTokenPvg.Privileges[0].Luid);     TTokenPvg.PrivilegeCount := 1;     TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;     cbtpPrevious := SizeOf(rTTokenPvg);     pcbtpPreviousRequired := 0;     if tpResult then       Windows.AdjustTokenPrivileges(TTokenHd,                                     False,                                     TTokenPvg,                                     cbtpPrevious,                                     rTTokenPvg,                                     pcbtpPreviousRequired);   end;end;Result := ExitWindowsEx(RebootParam, 0);end;procedure TForm2.Button1Click(Sender: TObject);beginif c=1 then begin MyExitWindows(EWX_REBOOT or EWX_FORCE);end;if c=2 then begin MyExitWindows(EWX_POWEROFF or EWX_FORCE);end;if c=3 thenbegin close();end;end;procedure TForm2.RadioButton1Click(Sender: TObject);beginc:=1;end;procedure TForm2.RadioButton2Click(Sender: TObject);beginc:=2;end;procedure TForm2.RadioButton3Click(Sender: TObject);beginc:=3;end;procedure TForm2.FormCreate(Sender: TObject);begin end;end.
|  | Ответ отправил: Drozdov D.V. (статус: 4-ый класс)Время отправки: 27 февраля 2008, 19:31
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо =) етот ответ более правильный мне понравился инсталятор ) |  
 Мини-форум вопросаВсего сообщений: 2; последнее сообщение — 28 февраля 2008, 14:57; участников в обсуждении: 2. 
|   | NPC (статус: Посетитель), 28 февраля 2008, 14:57 [#2]:Еще раз  спасибо , если вам не трудно я далее буду еще задавать вопросы ) |  31 января 2011, 19:30: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |