Avatar billede skovjuul Nybegynder
13. juli 2007 - 15:44 Der er 5 kommentarer og
4 løsninger

Hjælp til installationsprogram

Hola

Jeg er ved at lave mit eget installationsprogram og har/får en del spørgsmål i den forbindelse (derfor de mange point, så er der lidt at dele ud af)

1) kan jeg se om en process kører, f.eks. mysql-nt? Så jeg kan checke på om den del skal installeres eller ej.

2) hvordan får jeg nemmest pakket alle mine filer til installationen sammen i én? selv-udpakkende zip fil eller lign.?

3) hvordan får jeg en plads i windows menuen/genvej til skrivebord?

Der kommer nok flere, men det er da lidt at starte på :)

God weekend
Jesper
Avatar billede vallemanden Nybegynder
13. juli 2007 - 15:55 #1
1)
uses
  WinSvc;

function ServiceGetStatus(sMachine, sService: PChar): DWORD;
  {******************************************}
  {*** Parameters: ***}
  {*** sService: specifies the name of the service to open
  {*** sMachine: specifies the name of the target computer
  {*** ***}
  {*** Return Values: ***}
  {*** -1 = Error opening service ***}
  {*** 1 = SERVICE_STOPPED ***}
  {*** 2 = SERVICE_START_PENDING ***}
  {*** 3 = SERVICE_STOP_PENDING ***}
  {*** 4 = SERVICE_RUNNING ***}
  {*** 5 = SERVICE_CONTINUE_PENDING ***}
  {*** 6 = SERVICE_PAUSE_PENDING ***}
  {*** 7 = SERVICE_PAUSED ***}
  {******************************************}
var
  SCManHandle, SvcHandle: SC_Handle;
  SS: TServiceStatus;
  dwStat: DWORD;
begin
  dwStat := 0;
  // Open service manager handle.
  SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT);
  if (SCManHandle > 0) then
  begin
    SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS);
    // if Service installed
    if (SvcHandle > 0) then
    begin
      // SS structure holds the service status (TServiceStatus);
      if (QueryServiceStatus(SvcHandle, SS)) then
        dwStat := ss.dwCurrentState;
      CloseServiceHandle(SvcHandle);
    end;
    CloseServiceHandle(SCManHandle);
  end;
  Result := dwStat;
end;

function ServiceRunning(sMachine, sService: PChar): Boolean;
begin
  Result := SERVICE_RUNNING = ServiceGetStatus(sMachine, sService);
end;

// Check if Eventlog Service is running
procedure TForm1.Button1Click(Sender: TObject);
begin
  if ServiceRunning(nil, 'Eventlog') then
    ShowMessage('Eventlog Service Running')
  else
    ShowMessage('Eventlog Service not Running')
end;

{
  Windows 2000 and earlier: All processes are granted the SC_MANAGER_CONNECT,
  SC_MANAGER_ENUMERATE_SERVICE, and SC_MANAGER_QUERY_LOCK_STATUS access rights.

  Windows XP: Only authenticated users are granted the SC_MANAGER_CONNECT,
  SC_MANAGER_ENUMERATE_SERVICE,
  and SC_MANAGER_QUERY_LOCK_STATUS access rights.
}

{
  Do not use the service display name (as displayed in the services
  control panel applet.) You must use the real service name, as
  referenced in the registry under
  HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
}
Avatar billede vallemanden Nybegynder
13. juli 2007 - 15:58 #2
3)
  Try
  FileName := edit4.FullText+'\program.exe';
  with MySLink do begin
    SetPath(PChar(FileName));
    SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
  end;
  MyReg := TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');
  Directory := MyReg.ReadString('Shell Folders','Programs','')+'\program';
  CreateDir(Directory);
  WFileName := Directory+'\program.lnk';
  MyPFile.Save(PWChar(WFileName),False);
  Memo1.Lines.Add('program oprettet i start');
  except
  end;
Avatar billede vallemanden Nybegynder
13. juli 2007 - 15:59 #3
2)
winzip selvudpakkende exe fil (tror jeg)

http://www.winzip.com/prodpagese.htm
Avatar billede skovjuul Nybegynder
13. juli 2007 - 16:27 #4
Kanon, takker, vil jeg kigge på i løbet af weekenden.
Kan du evt. uddybe pkt. 3 lidt? Hvad er MySLink og MyPFile ?
Avatar billede skovjuul Nybegynder
15. juli 2007 - 02:29 #5
Hmm... mystisk, mine beskeder bliver ved med ikke at blive postet.
Men, ingen grund til at uddybe pkt 3 alligevel, jeg har fået det til at virke.

Jeg lader lige tråden være åben i tilfælde af at jeg har flere spørgsmål til emnet.

Forløbig tak for hjælpen
Avatar billede skovjuul Nybegynder
15. juli 2007 - 04:52 #6
Er der en måde jeg kan se hvilken udgave af Windows folk bruger? F.eks. WinXp, Vista, 2000 etc?
Avatar billede skovjuul Nybegynder
30. juli 2007 - 16:15 #8
Så lykkedes det at få lavet et lækkert installationsprogram. Så hvis du også smider et svar arne, så deler jeg nogle point ud.

Tak for hjælpen

Jesper
Avatar billede arne_v Ekspert
22. september 2007 - 21:58 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester