2 votes

Inno Setup : Clés de série différentes avec différentes options?

Comment fournir plusieurs numéros de série avec plusieurs options dans Inno Setup ?

Je veux écrire différentes valeurs dans le Registre, en fonction des différentes clés de série que je fournis aux clients.

ex différentes clés de série comme

sKey1 = "A1AA-B2ACF-HEJUI-UYTER"
sKey2 = "A1BB-B2ACF-HEJUI-UYTER"
sKey3 = "A1CC-B2ACF-HEJUI-UYTER"

Les 4 premiers caractères sont différents pour chaque clé et je veux les créer dans le Registre

if (custInput.startwith ("A1AA") then
    Root: "HKLM"; Subkey: "SOFTWARE\Version\"; ValueType:string; ValueName:"Name";ValueData: "{"Lite"}"; 
elseif  (custInput.startwith ("A1BB") then
    Root: "HKLM"; Subkey: "SOFTWARE\Version\"; ValueType:string; ValueName:"Name";ValueData: "{"Pro"}"; 
elseif  (custInput.startwith ("A1CC") then
    Root: "HKLM"; Subkey: "SOFTWARE\Version\"; ValueType:string; ValueName:"Name";ValueData: "{"Online"}"; 
endif

Comment réaliser cela dans Inno Setup ? J'ai utilisé la fonction CheckSerial ci-dessous:

function CheckSerial(Serial: String): Boolean;
  begin
    Result := Serial = '{#SerialNumber}';
  end;

2voto

Martin Prikryl Points 4584

Utilisez une constante scriptée pour décider de manière programmée de la valeur à stocker dans le registre :

[Setup]
UserInfoPage=yes

[Registry]
Root: "HKLM"; Subkey: "SOFTWARE\Version"; ValueType: string; ValueName: "Name"; \
    ValueData: "{code:GetEdition}";

[Code]

var
  Serials: TStrings;
  Editions: TStrings;

function CheckSerial(Serial: String): Boolean;
begin
  Result := (Serials.IndexOf(Serial) >= 0);
end;

procedure RegisterEdition(Serial: string; Edition: string);
begin
  Serials.Add(Serial);
  Editions.Add(Edition);
end;

function GetEdition(Param: string): string;
var
  Index: Integer;
begin
  Index := Serials.IndexOf(WizardForm.UserInfoSerialEdit.Text);
  if Index >= 0 then Result := Editions[Index];
end;

function InitializeSetup(): Boolean;
begin
  Serials := TStringList.Create;
  Editions := TStringList.Create;

  RegisterEdition('A1AA-B2ACF-HEJUI-UYTER', 'Lite');
  RegisterEdition('A1BB-B2ACF-HEJUI-UYTER', 'Pro');
  RegisterEdition('A1CC-B2ACF-HEJUI-UYTER', 'Online');

  Result := True;
end;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X