Inno Setup [Code] section variable to [Registry] -
i have problem inno setup.
i'm using resolution detection script in [code] section here:
inno setup: how primary monitor's resolution?
and want put xres , yres values [registry] section of installer looks this.
root: hkcu; subkey: "software\myapp\settings"; flags: uninsdeletekey; valuetype: dword; \ valuename: "screenwidth"; valuedata: "xres" root: hkcu; subkey: "software\myapp\settings"; flags: uninsdeletekey; valuetype: dword; \ valuename: "screenheight"; valuedata: "yres" i tried method how use pascal variable in inno setup?, can't work. tried solve problem myself many times, give up...
can me , explain how that?
i'm newbie inno setup, , pascal.
one way can writing single scripted constant function both dimensions , passed parameter return either horizontal or vertical resolution. rest upon inno setup engine:
[setup] appname=my program appversion=1.5 defaultdirname={pf}\my program [registry] ; getresolution function used in following {code:...} scripted constants ; takes parameter x retrieve horizontal resolution, y retrieve vertical root: hkcu; subkey: "software\myapp\settings"; flags: uninsdeletekey; valuetype: dword; \ valuename: "screenwidth"; valuedata: "{code:getresolution|x}" root: hkcu; subkey: "software\myapp\settings"; flags: uninsdeletekey; valuetype: dword; \ valuename: "screenheight"; valuedata: "{code:getresolution|y}" [code] function getsystemmetrics(nindex: integer): integer; external 'getsystemmetrics@user32.dll stdcall'; const sm_cxscreen = 0; sm_cyscreen = 1; function getresolution(param: string): string; begin // in {code:...} constant function call passing either // x or y char parameter (here param parameter), // let's decide dimension return param's first // char (uppercased allow passing small x , y) case uppercase(param[1]) of 'x': result := inttostr(getsystemmetrics(sm_cxscreen)); 'y': result := inttostr(getsystemmetrics(sm_cyscreen)); end; end;
Comments
Post a Comment