While testing my AS3 SWF library as3swf yesterday, i found that MXMLC (the compiler that comes with the Flex SDKs) Â writes undocumented SWF tags to the SWFs it produces.
I was able to identify two so far:
ProductInfo (Tag ID 41)
The ProductInfo tag contains infos about the tool used to generate the SWF, as well as the date and time the SWF was compiled. It also contains info about the “Edition” of the software used (see below), and although this seems to be always set to “None” in Flex Builder 3 and Flash Builder 4, it potentially could become a privacy issue, especially being an undocumented feature (you better know about this tag just in case you accidentally publish commercial work with your non commercial Flash Builder license).
- ProductID (UI32)
0: Unknown
1: Macromedia Flex for J2EE
2: Macromedia Flex for .NET
3: Adobe Flex - Edition (UI32)
0: Developer Edition
1: Full Commercial Edition
2: Non Commercial Edition
3: Educational Edition
4: Not For Resale (NFR) Edition
5: Trial Edition
6: None - MajorVersion (UI8)
- MinorVersion (UI8)
- BuildLow (UI32)
- BuildHigh (UI32)
- CompilationDate (UI64)
Milliseconds since 1.1.1970
Examples:
Flex 4.0 – [41:ProductInfo] ProductID: 3, Edition: 6, Version: 4.0.0.7791, CompileDate: Fri Aug 21 05:18:21 GMT-0300 2009
Flex 3.2 – [41:ProductInfo]Â ProductID: 3, Edition: 6, Version: 3.2.0.3958, CompileDate: Fri Aug 21 05:23:22 GMT-0300 2009
DebugID (Tag ID 63)
This tag is written to SWFs that are enabled for debugging. It contains a 16 byte UUID.
- UUID (UI8[16])
Example:
[63:DebugID] UUID: b8f36d6a-c735-a340-daa7-44730af92505
Reference
Flex SDK:
Community:
- Igor Costa: Reading the compilation date of SWF with the magic of ByteArray
- Judah Frangipane: Cache busting your Flex SWF and the SWF Compilation Date
I was surprised too to see this ProductInfo tag – what is the default value for the Flex SDK?
Removing the debug tag is useful if you want to play a debug SWF with a debug Flash player and if you don’t want it to scream “where is the debugger?”.
PS: I love this stuff :)
Interesting.
I don’t like that ProductInfo tag. We need a tool to remove it before uploading.
This is definitely a conspiracy theory follower is talking inside of me q:
hi claus,
i wrote a wrapper class that lets you put the publish (compile) date into your applications. whenever i publish to production i can always see the compile date and compare it to what i have locally. it has come in super handy. check it out here, http://www.judahfrangipane.com/blog/?p=252.