我可以在Inno-Setup中使用由“生成GUID”选项创建的AppId吗?

时间:2015-09-06 12:44:28

标签: inno-setup

这是我第一次需要进行设置,所以使用Inno-Setup。但有一件事我无法在文档中找到“生成GUID”按钮真的生成全局唯一ID?我可以将此作为我的应用程序的AppId用于生产目的吗?

如果是,那么它如何保证它在全球生产中是独一无二的? 我的意思是这个“生成GUID”功能跟踪世界上所有软件的AppId,使下一个独特,或者使用打包到设置中的文件生成它?

2 个答案:

答案 0 :(得分:4)

该功能生成的GUID与底层CoCreateGuid API函数生成的GUID一样唯一。您可以自由地将它用于AppId指令,但没有人保证您在系统中是唯一的。每个人仍然可以输入那里生成相同的GUID,但机会非常小。

如果您真的害怕它的唯一性,可以使用{code:..}常量并在运行时生成它。

答案 1 :(得分:1)

虽然您可以在运行时生成GUID TLama noted - 但是当有人在新的更新发布时(您发布更新/错误修复)升级安装时,安装程​​序将不会出现问题能够确定要在内部更新的GUID。您需要编写一些复杂的东西来确定应用程序是否已经安装而不使用GUID来识别它(因为理论上它在安装它的每台用户机器上都是不同的GUID)。

GUID应包含的内容:GUID 通常 8-4-4-4-12 Hex,但Innosetup允许您使用任何您想要的内容。您可以使用“JayadrathaMondal_ ApplicationName _For_ Company ”之类的值,而不是生成GUID。只要它不会改变(例如,不要使它依赖于版本号),你应该永远是好的。

没有集中跟踪服务来保证您设置的GUID已经被使用,也不会保证您选择的GUID将被其他人继续使用。

但是,GUID应该是唯一的,因此不太可能。请考虑维基百科的以下内容:

  

来自Wikipedia > GUIDs (Globally unique identifier)

     

[...]   从随机数生成的GUID通常包含6个固定位(这些指示GUID是随机的)和122个随机位;唯一此类GUID的总数是2122(约5.3×1036)。这个数字太大,以至于随机产生两次相同数字的概率可以忽略不计;但是其他GUID版本具有不同的唯一性属性和概率,从保证唯一性到可能的重复。假设统一概率简单,如果2014年全球每个人拥有6亿个GUID,则一个重复的概率约为50%。

想象一下,地球上每个人(7,000,000,000人)都是软件开发人员,他们都创建了600,000,000个全部使用GUID的应用程序。总共有6e17个GUID正在使用中,任何新的GUID都有50%的可能性已经存在。

这个数字会随着您开始为那些不会生成自己的GUID(非开发人员)的70亿人打折而减少。