28 Aug 2010

Problem: 7-Zip SFX extracted files disappearing?

I had a self-extracting archive made using 7-Zip SFX. I had many files inside the compressed file. There was one exe file, let's called it A.exe, it was the one run on extraction. In addition A.exe ran another file B.exe. The problem was that upon extraction the B.exe wasn't there! Why didn't it execute, why wasn't it there?

The reason was that my first file, A.exe was an AutoIt script. I used the Run() function to execute B.exe. This was a mistake because the 7-Zip SFX deletes the extracted files after A.exe had finished executing. This meant that B.exe wasn't there or associated files weren't there at execution time. This problem only surfaced when extracting to a SSD (Solid State Disk), maybe because the write times are slower to SSD?

The solution was to change the function to RunWait(). This function runs an external program and waits for it to finish executing before continuing. As long as your first exe (A.exe in my example) is still running, the 7-Zip SFX will not delete the temporary files - problem solved! 

9 Aug 2010

Can't install Flash Player 10?

Problem
When installing the latest Flash Player 10 for Internet Explorer did you get this error?
ActiveX control for Flash Player could not be registered

If you had the above error then try the following:
(these instructions have been tested on a Windows XP SP3 computer, I can't guarantee anything but it worked for me!)


Solution
To start with I recommend you uninstall the Flash Player you currently have installed. You can do this via the Control Panel or use the special utility Adobe have made:

uninstall_flash_player.exe
http://kb2.adobe.com/cps/141/tn_14157.html
 
1.  Logon as Administrator or a Windows user that has Administrator permissions.
2.  Run uninstall_flash_player.exe (this will uninstall the current Flash Player)
3.  Shut down, restart the computer


The installation error: "ActiveX control for Flash Player could not be registered" typically appears if the registry permissions are not set to administrator. To do this you'll need a utility from Microsoft called SubInACL.exe and a file called reset_fp10.cmd from Adobe. Links to these files can be found under 'References' at the bottom of this article, or follow the instructions on the following Adobe knowledge base article: http://kb2.adobe.com/cps/494/cpsid_49419.html

When you've followed the above instructions and you've run reset_fp10.cmd, did it fix it? I had a situation where it still didn't solve this problem! If you still have a problem, here's my solution:


Extended Solution
Click Start | Run
Type CMD  [Enter]
Type the following command lines:
CD\ [Enter]
CD "Program Files\Windows Resource Kits\Tools"   [Enter]
subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f  [Enter]


AutoIt Script
If you deploy solutions you may wish to create a 'fix' script. Here's some code to get you started with AutoIt:


RunWait(@ComSpec & " /c echo y|reset_fp10.cmd", @ScriptDir, @SW_MAXIMIZE)

RunWait(@ComSpec & " /c subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f", @ScriptDir, @SW_MAXIMIZE)



References
Adobe knowledge base article:
http://kb2.adobe.com/cps/494/cpsid_49419.html

uninstall_flash_player.exe
http://kb2.adobe.com/cps/141/tn_14157.html
 
SubInACL.exe (subinacl.msi)
http://www.microsoft.com/downloads/details.aspx?FamilyID=e8ba3e56-d8fe-4a91-93cf-ed6985e3927b&displaylang=en

reset_fp10.cmd (reset_fp10.zip)
http://kb2.adobe.com/cps/494/cpsid_49419/attachments/reset_fp10.zip