|
|
|
#1
|
||||
|
||||
|
i use Windows DxDiag to check the system, its easy but long, hare are code:
Code:
[Code] //XML module 1.0 type TTagPoint = record Name: String; BeginPos, EndPos, Level: Integer; end; const CP_ACP = 0; CP_UTF8 = 65001; Function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: PAnsiChar; cbMultiByte: integer; lpWideCharStr: PAnsiChar; cchWideChar: integer): longint; external '[email protected] stdcall'; Function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: PAnsiChar; cchWideChar: integer; lpMultiByteStr: PAnsiChar; cbMultiByte: integer; lpDefaultChar: integer; lpUsedDefaultChar: integer): longint; external '[email protected] stdcall'; function AnsiToUtf8(strSource: string): string; var nRet, nRet2: integer; WideCharBuf, MultiByteBuf: AnsiString; begin SetLength(WideCharBuf, Length(strSource) * 2); SetLength(MultiByteBuf, Length(strSource) * 2); nRet:= MultiByteToWideChar(CP_ACP, 0, strSource, -1, WideCharBuf, Length(WideCharBuf)); nRet2:= WideCharToMultiByte(CP_UTF8, 0, WideCharBuf, -1, MultiByteBuf, Length(MultiByteBuf), 0, 0); MultiByteBuf:=Copy(MultiByteBuf, 1, nRet2-1); Result:= MultiByteBuf; end; function GetExists(TagArr: array of TTagPoint): Boolean; var Part1, Part2, Temp: Boolean; n: integer; begin if (GetArrayLength(TagArr) > 1) then begin Temp:= True; for n:= GetArrayLength(TagArr)-1 downto 1 do begin Part1:=False; If TagArr[n].BeginPos > TagArr[n-1].BeginPos then Part1:=True; Part2:=False; If TagArr[n].EndPos < TagArr[n-1].EndPos then Part2:=True; Temp:=Temp and (Part1 and Part2); end; If Temp then Result:= True; end else begin Result:=False; if (TagArr[0].BeginPos > 0) and (TagArr[0].EndPos > 0) then Result:= true; end; end; function ExpandTags(const sFileText, sTagName: string): array of TTagPoint; var i: integer; sTags: array of TTagPoint; begin SetArrayLength(Result, 0); If Pos('\', STagName) > 0 then try repeat i:= GetArrayLength(sTags); SetArrayLength(sTags, i+1); sTags[i].Name:= Copy(sTagName, 1, Pos('\', sTagName)-1); sTags[i].Level:= i; Delete(sTagName, 1, Pos('\', sTagName)); until Pos('\', STagName) = 0; finally begin i:= GetArrayLength(sTags); SetArrayLength(sTags, i+1); sTags[i].Level:= i; sTags[i].Name:= Copy(sTagName, 1, Length(sTagName)); end; end else begin SetArrayLength(sTags, 1); sTags[0].Name:= sTagName; end; Result:= sTags; end; function XMLChangeValue(sFileName, sTagName, sTagParam: string): Boolean; var sFileText: Ansistring; i: Integer; Tags: array of TTagPoint; begin Result:= False if LoadStringFromFile(sFileName, sFileText) then begin Tags:= Expandtags(sFileText, sTagName); for i:=0 to GetArrayLength(Tags)-1 do begin Tags[i].BeginPos:= Pos('<'+Tags[i].Name, sFileText); if (Tags[i].BeginPos <> 0) then while sFileText[Tags[i].BeginPos] <> '>' do Tags[i].BeginPos:=Tags[i].BeginPos+1; Tags[i].EndPos:= Pos('</'+Tags[i].Name+'>', sFileText) end; If GetExists(Tags) then begin i:= GetArrayLength(Tags)-1; Result:= SaveStringToFile(sFileName, Copy(sFileText,1,Tags[i].BeginPos) + AnsiToUtf8(sTagParam) + Copy(sFileText,Tags[i].EndPos,Length(sFileText)), False); end; end; end; function XMLWriteValue(sFileName, sTagname, sTagType, sTagParam: string): Boolean; var sFileText: AnsiString; sSpace, sText: string; i, k, n, CopyPos: Integer; Tags: array of TTagPoint; begin Result:= False; if not FileExists(sFileName) then SaveStringToFile(sFileName, '<?xml version="1.0" encoding="utf-8" standalone="yes"?>', False); if LoadStringFromFile(sFileName, sFileText) then begin Tags:= Expandtags(sFileText, sTagName); for i:=0 to GetArrayLength(Tags)-1 do begin Tags[i].BeginPos:= Pos('<'+Tags[i].Name, sFileText); if (Tags[i].BeginPos <> 0) then while sFileText[Tags[i].BeginPos] <> '>' do Tags[i].BeginPos:=Tags[i].BeginPos+1; Tags[i].EndPos:= Pos('</'+Tags[i].Name+'>', sFileText) end; i:= GetArrayLength(Tags)-1; sText:=''; if ((i-1)<>0) then for n:=0 to i-1 do begin sSpace:= #13#10; if (Tags[n].Level-1>=0) then for k:=0 to Tags[n].Level-1 do sSpace:=sSpace+#9; if (Tags[n].BeginPos=0)and(Tags[n].EndPos=0) then sText:= sText+sSpace+'<'+Tags[n].Name+'>'; end; sSpace:=#13#10; for k:= 0 to Tags[i].Level-1 do sSpace:= sSpace+#9; if (i+1=1) then sSpace:=#13#10; if (i+1=1)or(Tags[i-1].BeginPos=0) then begin CopyPos:= 1; while sFileText[CopyPos] <> '>' do CopyPos:=CopyPos+1; end else CopyPos:=Tags[i-1].BeginPos; if (sTagParam <> '')and(sTagType <> '') then sText:= sText+sSpace+'<'+Tags[i].Name+' type="'+sTagType+'">'+AnsiToUtf8(sTagParam)+'</'+Tags[i].Name+'>'; if (sTagParam = '')and(sTagType = '') then sText:= sText+sSpace+'<'+Tags[i].Name+'>'+sSpace+'</'+Tags[i].Name+'>'; if ((i-1)<>0) then for n:=i-1 downto 0 do begin sSpace:= #13#10; if (Tags[n].Level-1>=0) then for k:=0 to Tags[n].Level-1 do sSpace:=sSpace+#9; if (Tags[n].BeginPos=0)and(Tags[n].EndPos=0) then sText:= sText+sSpace+'</'+Tags[n].Name+'>'; end; Result:= SaveStringToFile(sFilename, Copy(sFileText, 1, CopyPos)+sText+Copy(sFileText,CopyPos+1,Length(sFileText)), False) end; end; function XMLReadValue(sFileName, sTagName: string; var sData: string): Boolean; var sFileText: ansistring; i: Integer; Tags: array of TTagPoint; begin Result:= False if LoadStringFromFile(sFileName, sFileText) then begin Tags:= ExpandTags(sFileText, sTagName); for i:=0 to GetArrayLength(Tags)-1 do begin Tags[i].BeginPos:= Pos('<'+Tags[i].Name, sFileText); if (Tags[i].BeginPos <> 0) then while sFileText[Tags[i].BeginPos] <> '>' do Tags[i].BeginPos:=Tags[i].BeginPos+1; Tags[i].EndPos:= Pos('</'+Tags[i].Name+'>', sFileText); end; If GetExists(Tags) then begin i:= GetArrayLength(Tags)-1; sData:= Copy(sFileText, Tags[i].BeginPos+1, Tags[i].EndPos-Tags[i].BeginPos-1); Result:= True; end; end; end; function XMLDeleteValue(sFileName, sTagName: string): Boolean; var b,e,i: Integer; sFileText: ansistring; Tags: array of TTagPoint; begin Result:= False; if LoadStringFromFile(sFileName, sFileText) then begin Tags:= ExpandTags(sFileText, sTagName); for i:=0 to GetArrayLength(Tags)-1 do begin Tags[i].BeginPos:= Pos('<'+Tags[i].Name, sFileText); if (Tags[i].BeginPos <> 0) then while sFileText[Tags[i].BeginPos] <> '>' do Tags[i].BeginPos:=Tags[i].BeginPos+1; Tags[i].EndPos:= Pos('</'+Tags[i].Name+'>', sFileText) end; If GetExists(Tags) then begin i:= GetArrayLength(Tags)-1; b:= Tags[i].BeginPos-1; e:= Tags[i].EndPos; while (b-1<>1)and(sFileText[b-1] <> '>') do b:=b-1; while (e+1<>Length(sFileText))and(sFileText[e-2] <> '>') do e:=e+1; Result:= SaveStringToFile(sFileName, Copy(sFileText,1,b) + Copy(sFileText,e,Length(sFileText)), False); end; end; end; //END function InitializeSetup: Boolean; var res:integer; tra,ara,pro,dxv,dxw,vnm:string; begin Exec(ExpandConstant('{win}\system32\dxdiag.exe'),'/whql:off /x '+ExpandConstant('{tmp}')+'\dxdiag.xml',ExpandConstant('{tmp}'),0,ewWaitUntilTerminated,res); XMLReadValue(ExpandConstant('{tmp}\dxdiag.xml'),'DDIVersion',dxv); //video dx XMLReadValue(ExpandConstant('{tmp}\dxdiag.xml'),'DirectXVersion',dxw); //OS dx XMLReadValue(ExpandConstant('{tmp}\dxdiag.xml'),'Processor',pro); //Processor XMLReadValue(ExpandConstant('{tmp}\dxdiag.xml'),'Memory',tra); // All RAM XMLReadValue(ExpandConstant('{tmp}\dxdiag.xml'),'AvaliableOSMem',ara); //Avaliable RAM XMLReadValue(ExpandConstant('{tmp}\dxdiag.xml'),'CardName',vnm); //Videocard name if MsgBox('Processor name: '+pro+#13+'Videocard Name: '+vnm+#13+'OS DirectX Ver: '+dxw+#13+'VideoCard DirectX Ver: DirectX '+dxv+#13+'Ram All/Avaliable: '+tra+'/'+ara,mbInformation,MB_OK) = MB_OK then Result:=False; end; |
| The Following 2 Users Say Thank You to altef_4 For This Useful Post: | ||
papas (25-01-2017), y_thelastknight (30-11-2013) | ||
| Sponsored Links |
|
#2
|
|||
|
|||
|
Quote:
![]() How can I do like the picture Last edited by ayateknik; 28-10-2013 at 15:18. |
|
#3
|
||||
|
||||
|
Ask Razor12911, the screen of his script
|
|
#4
|
||||
|
||||
|
I used my script then added Altef's example in it.
|
|
#5
|
||||
|
||||
|
you did that dxdiag xml... whatever it is? you created it?
|
|
#6
|
||||
|
||||
|
Win + R then DxDiag and you will see
|
|
#8
|
||||
|
||||
|
I used the DXDiag exmaple and look what I got.
|
|
#9
|
|||
|
|||
|
@altef_4
Thanks for sharing your amazing script... Nice to hear again from you after a long period... ![]() Works flawlessly on my system and every provided information are correct...
__________________
Paint me white so i can invisibly fight in the light...paint me black so i can hide my tears in the shadow of your heart. |
| The Following User Says Thank You to amin fear For This Useful Post: | ||
altef_4 (24-10-2013) | ||
|
#10
|
||||
|
||||
|
Preview of 2.3.1.3
new beta, many small bugs (easy fixable), added ReDrawText module 1.5e by Shegorat (v4 edited by me), new system check, updated my bp.dll (check temp folder for music.mp3) and script size is 265 kb.
|
| The Following User Says Thank You to altef_4 For This Useful Post: | ||
y_thelastknight (12-11-2013) | ||
|
#11
|
||||
|
||||
|
Quote:
|
|
#12
|
||||
|
||||
|
i find something interesting, it is modified Inno Setup 5.5.1 with alphaskins support (by tlama)
try it. |
| The Following 4 Users Say Thank You to altef_4 For This Useful Post: | ||
|
#13
|
||||
|
||||
|
Thanks, please advanced if possible make dll to use whith inno setup unicode. this version not compile autorum page before wizard page.
|
|
#14
|
||||
|
||||
|
if you say about the creation an a library like isskin, i think it's impossible (or difficult, i was try to do this, maximum what i got - wery bugged form, and message boxes).
|
|
#15
|
||||
|
||||
|
Quote:
using the modify version inno setup, not possible use to custom form. Advanced users you could create a topic with the differences between the version of inno setup inno setup VS unicode Unicode Enhanced Edition (What has the most in vs. enhanced) |
![]() |
| Tags |
| inno setup, installer, script, source code |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Conversion Designer/Installer Creator | Razor12911 | Conversion Tutorials | 1613 | 03-10-2024 01:24 |
| Carldric Installer (Compact Version) | Carldric Clement | Conversion Tutorials | 4 | 20-01-2023 01:43 |
| Game Installer Designer by altef_4 | altef_4 | Conversion Tutorials | 236 | 28-05-2021 02:54 |
| INDEX - Conversion Tutorial Index | Razor12911 | Conversion Tutorials | 5 | 11-06-2020 02:05 |
| Tutorial using CI 8.0.0 | yener90 | Conversion Tutorials | 424 | 21-10-2014 09:49 |