Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 382

/ вопрос решён /

Здравствуйте! Уважаемые експерты!
У меня пришла мысль создать программу что-то вроде инсталятора с удобным интерфейсом. Так вот я незнаю как сделать чтобы у меня при нажатии на кнопку установить при выборе программы он у меня устанавливал ее.

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

NPC Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: 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 форм исходники прилогаются. Можно добавить запись в реестр.
Об расширении вайла используемой прогой или если создаёт.
Прописать в меню и автозапуске.
Удачи!

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, ExtCtrls, Gauges, StdCtrls, Buttons,ShellAPI,
  8. MPlayer,MMSystem, XPMan;
  9.  
  10. type
  11. TForm1 = class(TForm)
  12. Button1: TButton;
  13. Label1: TLabel;
  14. Label2: TLabel;
  15. Gauge1: TGauge;
  16. Timer1: TTimer;
  17. StaticText1: TStaticText;
  18. StaticText2: TStaticText;
  19. Button2: TButton;
  20. Edit1: TEdit;
  21. StaticText3: TStaticText;
  22. BitBtn1: TBitBtn;
  23. XPManifest1: TXPManifest;
  24. procedure Timer1Timer(Sender: TObject);
  25. procedure Button1Click(Sender: TObject);
  26. procedure Button2Click(Sender: TObject);
  27. procedure BitBtn1Click(Sender: TObject);
  28. procedure FormCreate(Sender: TObject);
  29.  
  30. private
  31. { Private declarations }
  32.  
  33. public
  34. { Public declarations }
  35. end;
  36.  
  37. type TBuffer = array of Char;
  38.  
  39. var
  40. Form1: TForm1;
  41. a,b:integer;
  42. OpStruc: TSHFileOpStruct;
  43. frombuf, tobuf: Array [0..128] of Char;
  44.  
  45. implementation
  46.  
  47. uses Unit2;
  48.  
  49. {$R *.dfm}
  50.  
  51. // OBRABOTKA
  52. procedure TForm1.Timer1Timer(Sender: TObject);
  53. begin
  54.  
  55. if b=1 then begin a:=a+1; end;
  56. Gauge1.Progress := a;
  57.  
  58.  
  59. end;
  60.  
  61.  
  62. begin FillChar( frombuf, Sizeof(frombuf), 0 );
  63. FillChar( tobuf, Sizeof(tobuf), 0 );
  64.  
  65. StrPCopy( frombuf, 'datares*.*' );
  66. StrPCopy( tobuf, edit1.Text );
  67. with OpStruc do begin
  68. Wnd := Handle;
  69. wFunc := FO_COPY;
  70. pFrom := @frombuf;
  71. pTo := @tobuf;
  72. fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
  73. fAnyOperationsAborted := False;
  74. hNameMappings := Nil;
  75. lpszProgressTitle := Nil;
  76. end;
  77. ShFileOperation( OpStruc );
  78. end;
  79.  
  80. end;
  81.  
  82.  
  83. end;
  84. If a=90 then begin
  85.  
  86.  
  87. end;
  88.  
  89. If a=145 then begin
  90. //-----------------------------
  91. Form2.Visible := true;
  92. //-----------------------------
  93. end;
  94.  
  95. If a=155 Then begin
  96.  
  97.  
  98.  
  99. else
  100.  
  101.  
  102. if a=160 then
  103. begin
  104.  
  105. end;
  106.  
  107. if a=200 then
  108. begin
  109. Close;
  110. end;
  111.  
  112.  
  113. end;
  114.  
  115. end;
  116.  
  117. procedure TForm1.Button1Click(Sender: TObject);
  118. begin
  119.  
  120. b:=1;
  121. end;
  122.  
  123. procedure TForm1.Button2Click(Sender: TObject);
  124. begin
  125. if b=1 then begin
  126.  
  127. b:=1;
  128. end;
  129.  
  130.  
  131. end;
  132.  
  133.  
  134. procedure TForm1.BitBtn1Click(Sender: TObject);
  135. begin
  136.  
  137. end;
  138.  
  139. procedure xex;
  140. begin
  141. exit;
  142. end;
  143.  
  144.  
  145. procedure TForm1.FormCreate(Sender: TObject);
  146. begin
  147. PostMessage(Application.Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 1);
  148. end;
  149.  
  150. end.
  151.  
  152. /////////////////////////////////////-------------------------------------
  153. unit Unit2;
  154.  
  155. interface
  156.  
  157. uses
  158. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  159. Dialogs, Gauges, StdCtrls, ExtCtrls, ComCtrls;
  160.  
  161. type
  162. TForm2 = class(TForm)
  163. RadioGroup1: TRadioGroup;
  164. Button1: TButton;
  165. RadioButton1: TRadioButton;
  166. RadioButton2: TRadioButton;
  167. RadioButton3: TRadioButton;
  168. Panel1: TPanel;
  169. Memo1: TMemo;
  170. procedure Button1Click(Sender: TObject);
  171. procedure RadioButton1Click(Sender: TObject);
  172. procedure RadioButton2Click(Sender: TObject);
  173. procedure RadioButton3Click(Sender: TObject);
  174. procedure FormCreate(Sender: TObject);
  175.  
  176. private
  177. { Private declarations }
  178. public
  179. { Public declarations }
  180. end;
  181.  
  182. var
  183. Form2: TForm2;
  184. c,d:integer;
  185. implementation
  186.  
  187. {$R *.dfm}
  188. function MyExitWindows(RebootParam: Longword): Boolean;
  189. var
  190. TTokenHd: THandle;
  191. TTokenPvg: TTokenPrivileges;
  192. cbtpPrevious: DWORD;
  193. rTTokenPvg: TTokenPrivileges;
  194. pcbtpPreviousRequired: DWORD;
  195. tpResult: Boolean;
  196. const
  197. SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
  198. begin
  199. if Win32Platform = VER_PLATFORM_WIN32_NT then
  200. begin
  201. tpResult := OpenProcessToken(GetCurrentProcess(),
  202. TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
  203. TTokenHd);
  204. if tpResult then
  205. begin
  206. tpResult := LookupPrivilegeValue(nil,
  207. SE_SHUTDOWN_NAME,
  208. TTokenPvg.Privileges[0].Luid);
  209. TTokenPvg.PrivilegeCount := 1;
  210. TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  211. cbtpPrevious := SizeOf(rTTokenPvg);
  212. pcbtpPreviousRequired := 0;
  213. if tpResult then
  214. Windows.AdjustTokenPrivileges(TTokenHd,
  215. False,
  216. TTokenPvg,
  217. cbtpPrevious,
  218. rTTokenPvg,
  219. pcbtpPreviousRequired);
  220. end;
  221. end;
  222. Result := ExitWindowsEx(RebootParam, 0);
  223. end;
  224. procedure TForm2.Button1Click(Sender: TObject);
  225. begin
  226. if c=1 then begin MyExitWindows(EWX_REBOOT or EWX_FORCE);end;
  227. if c=2 then begin MyExitWindows(EWX_POWEROFF or EWX_FORCE);end;
  228. if c=3 then
  229. begin
  230.  
  231. close();
  232. end;
  233. end;
  234. procedure TForm2.RadioButton1Click(Sender: TObject);
  235. begin
  236. c:=1;
  237. end;
  238. procedure TForm2.RadioButton2Click(Sender: TObject);
  239. begin
  240. c:=2;
  241. end;
  242. procedure TForm2.RadioButton3Click(Sender: TObject);
  243. begin
  244. c:=3;
  245. end;
  246. procedure TForm2.FormCreate(Sender: TObject);
  247. begin
  248.  
  249. end;
  250. end.


Ответ отправил: Drozdov D.V. (статус: 4-ый класс)
Время отправки: 27 февраля 2008, 19:31
Оценка за ответ: 5

Комментарий к оценке: Спасибо =) етот ответ более правильный мне понравился инсталятор )

Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 28 февраля 2008, 14:57; участников в обсуждении: 2.
Feniks

Feniks (статус: Бакалавр), 27 февраля 2008, 18:32 [#1]:

Эт вам повезло, что я был на сайте, как вы, когда вы задали свой вопрос. ;-)
Не забывайте о существовании нашего канала в IRC, на котором всегда кто-то есть.
Удачи. ;-)
NPC

NPC (статус: Посетитель), 28 февраля 2008, 14:57 [#2]:

Еще раз спасибо , если вам не трудно я далее буду еще задавать вопросы )

31 января 2011, 19:30: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 26 марта 2023, 12:22
Выполнено за 0.02 сек.
Рейтинг@Mail.ru