我需要创建一个INNO安装脚本,这将允许我有一个对话框,用户可以输入序列号,然后我需要保存它们输入的序列号进入Windows注册表。C#WinForms应用程序的Inno安装脚本帮助
另外,如果他们没有输入序列号,则需要禁用下一个按钮,以便在他们不输入序列号时不能继续安装。
任何帮助将大大appriceated。
谢谢!
我需要创建一个INNO安装脚本,这将允许我有一个对话框,用户可以输入序列号,然后我需要保存它们输入的序列号进入Windows注册表。C#WinForms应用程序的Inno安装脚本帮助
另外,如果他们没有输入序列号,则需要禁用下一个按钮,以便在他们不输入序列号时不能继续安装。
任何帮助将大大appriceated。
谢谢!
下面是我在脚本中使用的简化示例。另外,请查看CheckSerial的InnoSetup文档(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;
当您设置UserInfoPage = yes directivve时,Inno可以提示用户输入此信息。 如果您添加CheckSerial事件功能,它还会要求提供注册详细信息。
有关更多详细信息,请参阅帮助文件中的UserInfoPage页面。
谢谢这工作得很好,但它不写入注册表设置...任何想法? –
它是否创建任何密钥? – mirtheil
只有HKLM中的那些,但我需要从C#WinForms应用程序中读取它们,其中用户不具有管理权限。所以我需要将设置存储在HKCU中。我似乎无法为HKCU编写任何密钥。 –