Inno setup 如何使用Inno设置创建动态变化的序列号?

Inno setup 如何使用Inno设置创建动态变化的序列号?,inno-setup,pascal,Inno Setup,Pascal,我有一个页面,在安装应用程序时提示输入其序列号。我使用Inno setup创建了安装文件。我想做的是:为了防止使用一个安装文件安装多个,我需要动态地更改InnoSetup脚本文件中提供的序列号。(即)假设我已将123作为序列号提供给我的软件并将其出售。买家,一旦他输入序列号并安装它,我需要将以前序列号的值更改为某个随机值,这样当其他人尝试使用相同的序列号123安装软件时,它就不会被安装。请帮忙 我有密码: procedure OnSerialEditChange(Sender: TObject)

我有一个页面,在安装应用程序时提示输入其序列号。我使用Inno setup创建了安装文件。我想做的是:为了防止使用一个安装文件安装多个,我需要动态地更改InnoSetup脚本文件中提供的序列号。(即)假设我已将123作为序列号提供给我的软件并将其出售。买家,一旦他输入序列号并安装它,我需要将以前序列号的值更改为某个随机值,这样当其他人尝试使用相同的序列号123安装软件时,它就不会被安装。请帮忙

我有密码:

procedure OnSerialEditChange(Sender: TObject);
var 
    CanContinue: Boolean;
begin
    CanContinue := GetSerialNumber('-') = SerialNumber;
    WizardForm.NextButton.Enabled := CanContinue;
end;

我在'InitializeWizard'过程中初始化'SerialNumber'的值。请告诉我我想做什么是可能的还是不可能的。

你能做的最好的事情就是提供一个在线服务,跟踪使用过的序列号。当用户输入他们的序列号时,您会将此号码发布到该服务,它会检查该号码是否尚未使用,如果尚未使用,您将允许安装。否则你会报告这个数字被(其他人)使用。这是一个小项目,所以我没有去做。我快到最后期限了。除了在线注册服务,我想不出任何其他可靠的方法,除了用你给每个客户的唯一号码为每个客户单独构建。好吧,你可以在用户端验证这个数字是否是唯一的,但是这个用户必须给你这个“唯一的东西”,然后你会告诉他们这个“唯一的东西”生成的数字。但这同样需要用户和您之间进行数据交换。@TLama是正确的。如果你没有时间(或者不想投入精力)正确地实现这一点,你就倒霉了。您不能以任何其他方式来完成这项工作,而不需要在每个安装副本上硬编码某些信息,这意味着每个安装副本都必须为每个安装定制。“给我一些快速、免费、安全的东西”是不可能的。你必须做这些工作来正确地实现你想要的。你不能做“动态更改,但不进行验证”,并希望保护任何东西。除此之外(如果你想要好的、快速的东西,你必须付费),只在安装程序中验证是不值得的;有人可以安装并分发最终安装的应用程序(或构建自己的安装程序)。如果您希望获得安全性,这是应用程序自己的工作。