Помогите со скриптом Inno Setup для приложения C # WinForms - PullRequest
2 голосов
/ 12 августа 2011

Мне нужно создать скрипт установки INNO, который позволит мне иметь диалоговое окно, в котором пользователь может ввести серийный номер, а затем мне нужно сохранить серийный номер, который они ввели в реестр Windows.

Кроме того, если они не вводят серийный номер, необходимо отключить следующую кнопку, чтобы они не могли продолжить установку, если они не вводят серийный номер.

Любая помощь будет высоко оценена.

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 августа 2011

Вот урезанный пример того, что я использую в своих сценариях. Кроме того, взгляните на документы InnoSetup для CheckSerial (http://www.jrsoftware.org/ishelp/topic_setup_userinfopage.htm).

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{6EAB4CDD-5D03-4EA1-BE97-7102D27CE955}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Registry]
Root: HKCU; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "User"; ValueData: "{userinfoname}"
Root: HKLM; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "SN"; ValueData: "{userinfoserial}"

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

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

[Files]
Source: "MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: nowait postinstall skipifsilent

[Code]
function CheckSerial(Serial: String): Boolean;
var
sTrial : string;
sSerial : string;

begin
sTrial := 'trial';
sSerial := lowercase(Serial);
  if (length(Serial) <> 25)  AND (sTrial <> sSerial) then
    Result := false
  else
    Result := true;
end;
0 голосов
/ 12 августа 2011

Inno может запрашивать у пользователя эту информацию, когда вы устанавливаете UserInfoPage = yes directivve.Если вы добавите функцию события CheckSerial, она также запросит регистрационные данные.

Для получения дополнительной информации см. Страницу UserInfoPage в файле справки.

...