unit DAVersionInfo; interface uses Windows; {$I DacVer.inc} type custvalget = function ( Name: PChar; Value: PChar ): PChar; stdcall; custvalset = procedure ( Name: PChar; Value: PChar ); stdcall; pscustparam = ^scustparam; scustparam = packed record valget: custvalget; // Function getting value of macros valset: custvalset; // Function changing value of macros hinst: THandle; // HINSTANCE setuo executable file hwnd: THandle; // Handle of the current opened window result: byte; // You must assign result value. See below end; const crCustomExit = 0; // Exit from setup crCustomOK = 1; // Continue next command crCustomNext = 2; // Next command or open next Dialog Window crCustomPrev = 3; // Previous Dialog Window procedure GetVersion(Param: Pscustparam); stdcall; export; implementation procedure GetVersion(Param: Pscustparam); stdcall; export; var Version: string; begin Version := '[' + DACVersion + ']'; Param.valset('#DACVERSION#', PChar(Version)); Param.result := crCustomOK; end; exports GetVersion name 'GetVersion'; end.