Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Inno-Setup, Desktop-Icon dynamisch erstellen (https://www.delphipraxis.net/153368-inno-setup-desktop-icon-dynamisch-erstellen.html)

hoika 30. Jul 2010 11:40

Inno-Setup, Desktop-Icon dynamisch erstellen
 
Hallo, #,

Ich möchte das "Desktop-Icon" erstellen dynamisch machen,
je nach einem gesetzten Reg-Eintrag.

Das folgende Bsp geht schon mal nicht.

Zitat:

[Code]
function GetCheckedFlag: Integer;
begin
Result:= 0; // checkedonce ??
end;

[Tasks]
;Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce; Languages:
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: {code: GetCheckedFlag}; Languages:
Wie bekomme ich das hin ?
Geht das überhaupt ?


Danke


Heiko

DelphiBandit 30. Jul 2010 14:41

AW: Inno-Setup, Desktop-Icon dynamisch erstellen
 
Die Funktion zur Prüfung muß wohl einen Boolean zurückliefern.

Habe mir mit IsTool, welches übrigens viel übersichtlicher als InnoScripts direkt zu bearbeiten, mal gerade unser Setup überarbeitet. Diese Version lässt sich durchkompilieren und sobald 0001 in der Registry drinsteht wird das Icon nicht mehr mit installiert. Habs kurz getestet. Zeigt auch gleich wie man an den Registry-Wert drankommt. Hoffe ich habe Deine Frage richtig verstanden ;)

Delphi-Quellcode:
[Icons]
Name: {group}\Handbuch; Filename: {app}\Handbuch.pdf; WorkingDir: {app}; IconFilename: {app}\Handbuch.ico; IconIndex: 0; Check: ShouldInstallIcon

[Code]
function ShouldInstallIcon: Boolean;
var succ: boolean;
    rval: dword;
begin
  // Ist erstmal gewünscht
  Result := True;

  if RegKeyExists(HKEY_CURRENT_USER, 'Software\MyApp') then
  begin
    // rval = 1 - wurde bereits schon mal installiert
    if RegQueryDWordValue(HKEY_CURRENT_USER, 'Software\MyApp\', 'Icon', rval) and
       (rval = 1) then
      Result := False;
  end;
end;
Gruß

hoika 30. Jul 2010 15:50

AW: Inno-Setup, Desktop-Icon dynamisch erstellen
 
Hallo,

ja hast du ;)
hab es mittlerweise so gemacht.

Komischerweise steht bei [Icons] dein Check nicht in der Hilfe.

Zitat:

Delphi-Quellcode:
{ neue Seite }
procedure CurPageChanged(PageID: Integer);
var
  sValue: String;
begin
  if PageID=wpSelectTasks then
  begin
   { ist der Pfad-Eintrag vorhanden, gehen wir davon aus,
     dass der Elefant installiert ist und deaktivieren die CheckBox "Desktop-Icon erstellen"
     ansonsten wir er aktiviert
     Standard ist "deaktiviert", wird deaktivieren das aber trotzdem }
    if RegQueryStringValue(HKCU, 'Software\MySoftwaret', 'Path', sValue) then
    begin
      WizardForm.TasksList.Checked[1]:= False;
    end
    else
    begin
      WizardForm.TasksList.Checked[1]:= True;
    end;
  end;
end;

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked

Aber mit deinem Check ist das noch flexibler, weil jedes Iocn angesprochen werden kann.

Danke

*Ausdruck und fürs nächste Mal merk*


Heiko

DelphiBandit 30. Jul 2010 16:43

AW: Inno-Setup, Desktop-Icon dynamisch erstellen
 
Zitat:

Zitat von hoika (Beitrag 1038647)
Komischerweise steht bei [Icons] dein Check nicht in der Hilfe.

Sozusagen ein undocumented feature. Das ist mir aber gar nicht aufgefallen.

Hab beim Drüberschauen im IsTool bei Icons eine Combobox "Scripting/Check" gefunden. Die bot mir schon alle Funktionen mit Result boolean an. Eben eine neue kodiert und geschaut was im fertigen Script dabei raus kommt und Dir rauskopiert. :D

hoika 30. Jul 2010 17:31

AW: Inno-Setup, Desktop-Icon dynamisch erstellen
 
Hallo,

also ich finde keine ComboBox (ISTool 5.3.0.1).

OK,

"Scriptsprache - Überprüfung" ... ;)


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz