Click here to Skip to main content
15,867,288 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
We have a 10 year old Windows Forms .NET Application that is now developed under Visual Studio 2008 targeted at Any CPU Platform / .NET 3.5 Framework and running under Windows XP 32-bit.

We currently use No Touch Deployment and are not in the position currently to move to ClickOnce Deployment due to resource constraints. We are stuck with using No Touch Deployment for now.

Aside from No Touch Deployment for the main .EXE, the application also uses Reflection (Assembly.LoadFrom(path)) to download individual Screen Controls and Entities DLLs from the server.

(As an aside, it also uses old technology .NET Remoting (again, no resources to convert to WCF yet) to connect to the backend server.)

Under Windows XP, we have encountered no known issues with No Touch deployment: i.e. we did not have to clear the User Local Settings Application Data Assembly and Temporary Internet Files folders.

We use an http link to the server to download (via No Touch Deployment) the application:

e.g.

http://<server>/<folder>/<app.exe>

This then triggers the local IE Execute Shell (IEEXEC.EXE) to process this request.

All good so far.

Now, we are in the process of moving to Windows 7 64 bit.

Since we reference 32 bit Assemblies, we changed our target platform to x86 (32 bit).

Because of this, we had to use CORFLAGS utility against the IEEXEC.EXE to create a 32-bit version.

http://windoh.wordpress.com/2011/05/27/how-to-run-32-bit-net-windows-apps-on-64-bit-windows-including-with-ieexec/

We now call the new 32-bit version of IEEXEC.EXE through a batch file to launch the application:

START C:\NEW_IEEXEC\IEEXEC.EXE http://<server>/<folder>/<app.exe>

The application launches correctly the first time we deploy to the server using No Touch Deployment.

However, when new versions of the .EXE or the Screen Controls (see above) are copied to the deployment server folder, the correct .EXE / .DLL versions don’t always get executed. (However, under Windows XP, this is not the case).

We ended up calling the following commands at System Startup in order to clean up the Assemblies and Temporary Internet folders in our testing.

Taskkill /F /IM ieexec.exe

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255

erase /F /Q /S "C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\assembly\dl3"

erase /F /Q /S /A "C:\Documents and Settings\%USERNAME%\Local Settings\Temporary Internet Files\Content.IE5"

erase /F /Q /S /A "c:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Low\Content.IE5"

erase /F /Q /S /A "C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5"

erase /F /Q /S /A "C:\Temp\*"

This ensures the correct DLLs and .EXE are referenced correctly after initial login of the User.

However, the company thinks this is a bit aggressive.

Is there a better way to do this? Is this a known issue with a known fix?

Hope you can help.
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900