Jump to content
Sign in to follow this  
ZDS

How to read custom extended properties of an exe

Recommended Posts

ZDS

Bonjour tout le monde / Hi to everyone !

First of all, I apologize in advance, I'm a french user and my last English lesson was near to 5 years ago ^^

I'm trying to read the extended property of a compiled script, NOT THE CLASSIC ONES (not the version for example, I know how to use FileGetVersion). When the following code is compiled to "foobar.exe", I'd like to catch (in another script) the value in a property named "foo", aka "bar" in the example below.

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****

#AutoIt3Wrapper_Res_Field=foo|bar
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
MsgBox(0,"","foobar !")
Here is a little screenshot from the Properties Window (sorry french version of Windows) :

post-44903-0-77571600-1337962939_thumb.j

Thanks for all the help you could give to me !

A bientôt / See you !

ZDS

PS: I forgot, I'm looking for a function for an executable, this is the kind of function for a not-compiled script :

Func FileGetAdvancedPropertyForSRC($file, $property)

    Local $value = "", $start = "#AutoIt3Wrapper_Res_Field="&$property&"|"
    Local $flux = FileOpen($file, 0)
    If Not @error And $file <> -1 Then
        For $i = 1 To 25
            Local $line = FileReadLine($flux, $i)
            If @error Then ExitLoop
            If StringLeft($line,StringLen($start)) = $start Then
                $value = StringTrimLeft($line,StringLen($start))
                ExitLoop
            EndIf
        Next
    EndIf
    FileClose($file)
    Return $value
EndFunc
Edited by ZDS

Share this post


Link to post
Share on other sites
water

This will return the required properties.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
BrewManNH

I have a modified version of that UDF and it won't return that property on an exe I compiled, I can see the property in Windows XP, but not with the UDF. I also don't see it in Windows 7, so I'm not sure where it sets that property. It's not visible to $object.GetDetailsOf.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites
ZDS

Hi,

In fact I was working with a very very old version of AutoIt. With 3.2.X and newer the FileGetVersion function use a new parameter, exactly what I needed.

Example for the micro-script in my first topic : FileGetVersion("foobar.exe", "foo")

This is my personal function to get the information from a script or a compiled script :

Func FileGetAdvancedProperty($file, $property)
    Local $value = ""
    If StringRegExp(StringLower($file), ".AU3$") Then
        Local $start = "#AutoIt3Wrapper_Res_Field="&$property&"|", $flux = FileOpen($file, 0)
        If Not @error And $file <> -1 Then
            For $i = 1 To 25
                Local $line = FileReadLine($flux, $i)
                If @error Then ExitLoop
                If StringLeft($line,StringLen($start)) = $start Then
                    $value = StringTrimLeft($line,StringLen($start))
                    ExitLoop
                EndIf
            Next
        EndIf
        FileClose($file)
    Else
        $value = FileGetVersion($file, $property)
        If @error Then $value = ""
    EndIf
    Return $value
EndFunc

Thanks for your help !

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×