|
Вопрос # 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}
-
- // OBRABOTKA
- procedure 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 then
- begin
-
- end;
-
- if a=200 then
- begin
- Close;
- end;
-
-
- end;
-
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
-
- b:=1;
- end;
-
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- if b=1 then begin
-
- b:=1;
- end;
-
-
- end;
-
-
- procedure TForm1.BitBtn1Click(Sender: TObject);
- begin
-
- end;
-
- procedure xex;
- begin
- exit;
- end;
-
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- PostMessage(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;
- var
- TTokenHd: THandle;
- TTokenPvg: TTokenPrivileges;
- cbtpPrevious: DWORD;
- rTTokenPvg: TTokenPrivileges;
- pcbtpPreviousRequired: DWORD;
- tpResult: Boolean;
- const
- SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
- begin
- if Win32Platform = VER_PLATFORM_WIN32_NT then
- begin
- 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);
- begin
- if 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 then
- begin
-
- close();
- end;
- end;
- procedure TForm2.RadioButton1Click(Sender: TObject);
- begin
- c:=1;
- end;
- procedure TForm2.RadioButton2Click(Sender: TObject);
- begin
- c:=2;
- end;
- procedure TForm2.RadioButton3Click(Sender: TObject);
- begin
- c:=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)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|