- How to generate a new GUID in Inno Setup?
- 4 Answers 4
- Related
- Hot Network Questions
- Subscribe to RSS
- Generate a GUID in Windows 10 (Globally Unique Identifier)
- To Generate a GUID in Windows 10 with PowerShell,
- Generate a new GUID with the GUID Generator tool
- About Sergey Tkachenko
- 1 thought on “ Generate a GUID in Windows 10 (Globally Unique Identifier) ”
- Defining and Exporting New GUIDs
- Создание GUID с помощью ASP в IIS
- Создание простого GUID на основе времени
- Создание простого GUID смещения времени
- Создание более уникального GUID смещения времени
- Создание простого случайного GUID
- Создание случайного GUID переменной длины
- Создание случайного GUID в стиле windows
- Создание более сильного случайного GUID в стиле windows
How to generate a new GUID in Inno Setup?
Is there a way to generate a new GUID from inside the Inno Setup script ?
4 Answers 4
Found this on innosetup newsgroup archive:
I haven’t tested it.
I was using this solution for a while (running 5.5.0 (a) and 5.5.1(a)).
However, when I updated to 5.5.2 (u) — my build scripts failed because of a duplicate type error: ‘TGUID’.
In order to fix it, I had to remove:
This is only happening on the Unicode version — meaning 5.5.2 (u) has a built in GUID type.
Here’s a somewhat cleaner implementation of FormatGuid , without the unnecessary hex-formatting function (what do we have Format for?!):
You still need to define TGuid and import CoCreateGuid as in the other answers:
You can do this by calling the Windows API function CoCreateGuid (in «OLE32.dll»), which you declare inside a [Code] section in your script. Sorry, I haven’t used Inno Setup in awhile so I don’t know exactly how to do this. To help, here’s a sample API declaration for the GetWindow() function:
And here’s a link to a VB sample for using CoCreateGuid:
Somewhere in all of this is your answer.
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.4.16.39093
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Generate a GUID in Windows 10 (Globally Unique Identifier)
A GUID is a 128-bit value consisting of one group of 8 hexadecimal digits, followed by three groups of 4 hexadecimal digits each, followed by one group of 12 hexadecimal digits. In Windows, GUIDs are used to identify objects such as interfaces, manager entry-point vectors (EPVs), ActiveX objects, and virtual (shell) folders.
You can use them in various scenarios, but in the general case you can use them to create a shortcut to a specific Control Panel applet or a Windows feature. For example, the following command will open the «Network Connections» folder:
So, GUIDs are the Microsoft implementation of the distributed computing environment (DCE) universally unique identifier (UUID). The RPC run-time libraries use UUIDs to check for compatibility between clients and servers and to select among multiple implementations of an interface. The Windows access-control functions use GUIDs to identify the type of object that an object-specific ACE in an access-control list (ACL) protects.
If you need to generate a new GUID in Windows, there are at least two methods you can use.
To Generate a GUID in Windows 10 with PowerShell,
-
- Open PowerShell. Tip: You can add «Open PowerShell As Administrator» context menu.
- Type or copy-paste the following command: [guid]::NewGuid() .This will produce a new GUID in the output.
- Alternatively, you can run the command ‘<'+[guid]::NewGuid().ToString()+'>‘ to get a new GUID in the traditional Registry format.
The [guid] object is available in PowerShell thanks to its tight integration with the .NET Framework.
If you cannot use PowerShell on your Windows 10 device, here’s an alternative solution. You can use Download Microsoft’s free GUID Generator tool.
Generate a new GUID with the GUID Generator tool
- Download the GUID Generator tool from this page.
- Download the EXE file and run it. It is a self-extracting, compressed EXE. Extract it to any path such as a folder on the Desktop and click OK to continue.
- Open the folder where you extracted it and run GUIDGEN.exe .
- Select a format you need, for example ‘Registry Format’.
- Click on Copy to copy the GUID to the clipboard.
Winaero greatly relies on your support. You can help the site keep bringing you interesting and useful content and software by using these options:
Share this post
About Sergey Tkachenko
Sergey Tkachenko is a software developer from Russia who started Winaero back in 2011. On this blog, Sergey is writing about everything connected to Microsoft, Windows and popular software. Follow him on Telegram, Twitter, and YouTube.
1 thought on “ Generate a GUID in Windows 10 (Globally Unique Identifier) ”
Or from the command prompt:
powershell -command “[guid]::NewGuid()”
Defining and Exporting New GUIDs
You define a new GUID for an item the driver exports to other system components, drivers, or applications. For example, you define a new GUID for a custom PnP event on one of its devices. To define and export a new GUID, you must do the following:
Choose a symbolic name for the GUID.
Choose a name that represents the purpose of the GUID. For example, the operating system uses such names as GUID_BUS_TYPE_PCI and PARPORT_WMI_ALLOCATE_FREE_COUNTS_GUID.
Generate a value for the GUID using Uuidgen.exe or Guidgen.exe. When you install the Microsoft Windows SDK, Uuidgen.exe is automatically installed. Guidgen.exe is available from the Microsoft Exchange Server GUID Generator download page.
These utilities generate a unique, formatted string that represents a 128-bit value. The «-s» switch on Uuidgen.exe outputs the GUID formatted as a C structure.
Define the GUID in an appropriate header file.
Use the DEFINE_GUID macro (defined in Guiddef.h) to associate the GUID symbolic name with its value (see Example 1).
Example 1: Defining GUIDs in a GUID-Only Header File
If the GUID is defined in a header file that contains statements other than GUID definitions, you must take an extra step to ensure that the GUID is instantiated in drivers that include the header file. The DEFINE_GUID statement must occur outside any #ifdef statements that prevent multiple inclusion. Otherwise, if the header file is included in a precompiled header, the GUID will not be instantiated in drivers that use the header file. See Example 2 for a sample GUID definition in a mixed header file.
Example 2: Defining GUIDs in a Mixed Header File
Putting a GUID definition outside statements that prevent multiple inclusion does not cause multiple instances of the GUID in a driver because DEFINE_GUID defines the GUID as an EXTERN_C variable. Multiple declarations of an EXTERN variable are allowed as long as the types match.
When creating a GUID for a new device setup class or device interface class, the following rules apply:
Do not use a single GUID to identify both a device setup class and a device interface class.
When creating a symbolic name to associate with the GUID, use the following convention:
For device setup classes, use the format GUID_DEVCLASS_XXX.
For device interface classes, use the format GUID_DEVINTERFACE_XXX.
Создание GUID с помощью ASP в IIS
В этой статье данная статья содержит сведения о создании нескольких примеров страниц с использованием различных форм ASP страниц ASP. Эти значения можно использовать для создания уникальных записей данных в базе данных или где-либо еще, где требуется уникальное поле данных.
Исходная версия продукта: Internet Information Services
Исходный номер КБ: 320375
Поскольку в этих примерах не используются переменные сеанса, эти примеры также работают на веб-серверах с отключенным состоянием сеанса.
Создание простого GUID на основе времени
В этом примере создается простой 14-символьный GUID на основе времени с использованием текущего года, месяца, дня, часа, минуты и секунд. Это позволяет сортировать данные на основе GUID.
Выберите «Начните», «На указатель на программы», выберите «Аксессуары», а затем выберите «Блокнот», чтобы открыть блокнот.
Введите или введите следующий код ASP в Блокноте:
- В меню «Файл» выберите «Сохранить».
- Найдите корневую папку для веб-сайта, который обычно является папкой C:\InetPub\Wwwroot для веб-сайта по умолчанию.
- Назовем файл GuidTest0.asp.
- Нажмите Сохранить.
- В меню Файл выберите Выход.
Найдите страницу с помощью Internet Explorer. Вы увидите GUID. При обновлении страницы вы увидите приращение GUID.
Создание простого GUID смещения времени
В этом примере создается 20-символьный GUID на основе времени с использованием смещения в секундах от 12:00 полуночи 1 января 2000 г. Это позволяет сортировать данные на основе GUID и может быть обновлено для использования любой другой даты в качестве базы.
Выберите «Начните», «На указатель на программы», выберите «Аксессуары», а затем выберите «Блокнот», чтобы открыть блокнот.
Введите или введите следующий код ASP в Блокноте:
- В меню «Файл» выберите «Сохранить».
- Найдите корневую папку для веб-сайта, который обычно является папкой C:\InetPub\Wwwroot для веб-сайта по умолчанию.
- Назовем файл GuidTest1.asp.
- Нажмите Сохранить.
- В меню Файл выберите Выход.
Найдите страницу с помощью Internet Explorer. Вы увидите GUID. При обновлении страницы вы увидите приращение GUID.
В этом примере уникальность разрешается только в том случае, если функция не вызвана два раза в одной и той же секунде. Любые два вызова функции в одно и то же время приводят к конфликту. Это может не вызывать проблем в зависимости от того, как код использует функцию, но вы можете использовать более уникальный пример GUID смещения времени, чтобы разрешить уникальные значения, которые происходят в ту же секунду.
Создание более уникального GUID смещения времени
В этом примере, как и в примере создания простого GUID смещения времени, создается GUID с учетом времени, но его длину составляет 25 символов. В этом примере создается 20-символьное значение со смещения в секундах с 12:00 полуночи 1 января 2000 г., а к концу этого значения добавлено еще пять случайных чисел. Это позволяет сортировать данные на основе GUID, но позволяет значительно больше уникальности. Его можно обновить для использования любой другой даты в качестве основы.
Выберите «Начните», «На указатель на программы», выберите «Аксессуары», а затем выберите «Блокнот», чтобы открыть блокнот.
Введите или введите следующий код ASP в Блокноте:
- В меню «Файл» выберите «Сохранить».
- Найдите корневую папку для веб-сайта, который обычно является папкой C:\InetPub\Wwwroot для веб-сайта по умолчанию.
- Назовем файл GuidTest2.asp.
- Нажмите Сохранить.
- В меню Файл выберите Выход.
Найдите страницу с помощью Internet Explorer. Вы увидите GUID. При обновлении страницы первые 20 символов приращения GUID будут случайными.
В этом примере и примере создания простого GUID смещения времени создаются для сериализации вызовов функции на основе CreateGUID времени. Если сортировка данных по времени не является требованием, можно использовать простой пример случайного GUID для создания случайного GUID.
Создание простого случайного GUID
Выберите «Начните», «На указатель на программы», выберите «Аксессуары», а затем выберите «Блокнот», чтобы открыть блокнот.
Введите или введите следующий код ASP в Блокноте:
- В меню «Файл» выберите «Сохранить».
- Найдите корневую папку веб-сайта, которая обычно является папкой C:\InetPub\Wwwroot для веб-сайта по умолчанию.
- Назовем файл GuidTest3.asp.
- Нажмите Сохранить.
- В меню Файл выберите Выход.
Найдите страницу с помощью Internet Explorer. Вы увидите 20-символьный случайный GUID. При обновлении страницы значение меняется случайным образом.
В этом примере создается случайный GUID фиксированной длины. Чтобы создать GUID переменной длины, используйте пример создания случайного GUID переменной длины.
Создание случайного GUID переменной длины
Выберите «Начните», «На указатель на программы», выберите «Аксессуары», а затем выберите «Блокнот», чтобы открыть блокнот.
Введите или введите следующий код ASP в Блокноте:
- В меню «Файл» выберите «Сохранить».
- Найдите корневую папку веб-сайта, которая обычно является папкой C:\InetPub\Wwwroot для веб-сайта по умолчанию.
- Назовем файл GuidTest4.asp.
- Нажмите Сохранить.
- В меню Файл выберите Выход.
Найдите страницу с помощью Internet Explorer. Вы увидите 10-символьный, 25-символьный и 50-символьный случайный GUID. При обновлении страницы значения меняются случайным образом.
В этом примере и в примере создания простого случайного GUID создаются строки случайных символов, совмещенных. В примере создания случайного GUID в стиле Windows эта функция расширяется для создания GUID, отформатированный как GUID Windows.
Создание случайного GUID в стиле windows
Windows в основном использует GUID при регистрации ИД класса для компонентов и других объектов, но ИХ можно использовать для чего угодно. GUID Windows — это длинные строки форматируемых 6xadecimal символов, то есть они используют числа от 0 до 9 и буквы A–F. (Microsoft Access также имеет встроенный ИД репликации в том же формате.) В этом примере показано, как использовать код, похожий на пример кода создания случайного GUID переменной длины для создания GUID, подобного GUID Windows.
Выберите «Начните», «На указатель на программы», выберите «Аксессуары», а затем выберите «Блокнот», чтобы открыть блокнот.
Введите или введите следующий код ASP в Блокноте:
- В меню «Файл» выберите «Сохранить».
- Найдите корневую папку для веб-сайта, который обычно является папкой C:\InetPub\Wwwroot для веб-сайта по умолчанию.
- Назовем файл GuidTest5.asp.
- Нажмите Сохранить.
- В меню Файл выберите Выход.
Найдите страницу с помощью Internet Explorer. Вы увидите случайный GUID, отформатированный как GUID Windows. При обновлении страницы значение меняется случайным образом.
Создание более сильного случайного GUID в стиле windows
Так как GUID Windows используют шестнадежные числа для каждого символа, в GUID можно использовать 16 значений для каждого символа. Если развернуть значения, чтобы включить весь алфавит, в GUID можно у каждого символа 36 значений. В этом примере функция из примера создания случайного GUID переменной длины используется для создания GUID в том же формате, что и GUID Windows.
Выберите «Начните», «На указатель на программы», выберите «Аксессуары», а затем выберите «Блокнот», чтобы открыть блокнот.
Введите или введите следующий код ASP в Блокноте:
- В меню «Файл» выберите «Сохранить».
- Найдите корневую папку для веб-сайта, который обычно является папкой C:\InetPub\Wwwroot для веб-сайта по умолчанию.
- Назовем файл GuidTest6.asp.
- Нажмите Сохранить.
- В меню Файл выберите Выход.
Найдите страницу с помощью Internet Explorer. Вы увидите случайный GUID, отформатированный как GUID Windows. При обновлении страницы значение меняется случайным образом.