Our .NET 2.0 (C#) software works great on XP but won’t run on Vista. We’ve spent hours searching for solutions, but nothing we’ve tried has worked.
Our software uses a DLL written in C++ which hooks calls to BeginPaint and EndPaint for RichEdit controls, and injects special handling when those are called. Vista chokes on that.
The goal of this project is to help us create an installer setup project in VisualStudio for a small demo app which uses that DLL. The installer must work on both XP and Vista. We will then take this "recipe for installation success" and apply it to the real software product.
We make a small software product that works great on XP but won't run properly on some versions of Microsoft Vista (e.g., Vista Home Premium). We’ve spent hours and hours searching with Google to find possible solutions, but nothing that we’ve tried has worked yet.
Our software product is coded using the .NET (C#) 2.0 framework. For the new version of our product, we wrote a new C++ DLL ([url removed, login to view]) to solve a core business need. It’s this DLL which is causing the problem.
The DLL was written in C++. It hooks calls to **BeginPaint** and **EndPaint** for **RichEdit** controls (the RichTextBox), and injects special handling when those are called. Vista apparently doesn’t like that, and the core feature of our software requires this functionality.
**THE PROJECT GOAL**
The goal of this project is to help us create an installer setup project in VisualStudio for a small demo app which uses that DLL. The installer must successfully install the software so that it runs perfectly on both XP and Vista. The program cannot require Admin privileges by the user to run. We will then take this **"recipe for installation success"** and apply it to the real software product.
The bidder have both Windows XP and Windows Vista (e.g., Home Premium) so you can test that the solution works on both platforms. Again, keep in mind, that this software is using .NET 2.0 (C#) and we own a licensed copy of VisualStudio 2005.
**THE DEMO PROJECT**
We created a demo project which closely mirrors the real product. We will give the source code for the Demo Project to the winning bidder. All interested parties, however, may install the **Demo Project executable**. The Demo Project will run fine on Windows XP. However, when you press the **Mirror Mode** button on a **Vista** machine, it will crash. (Make sure you are running as a Standard user.)
The Demo Project source code has two project solutions in it: One for the software executable, and one for the setup project.
> **Software Executable Project:**
> This is a simple project which contains the core functionality of the real software. On a single Form there is a button and a sub-classed RichTextBox. Click the button and the text in the RichTextBox reverses into a mirrored state. This nifty feature is the magic of the C++ DLL mentioned above.
> * **[url removed, login to view]:** This DLL contains all managed code. The sub-classed RichTextBox is called *FloScrollingRtfBox.* When it is created, it calls into the C++ DLL.
> * **[url removed, login to view]:** This is the C++ DLL which hooks into a RichEdit control’s BeginPaint and EndPaint functions.
> **The Setup Project:**
> This is a simple Setup Project. Any solution must work so that it can be dynamically run each time the setup project rebuilds. The setup must be able to install the executable onto XP and Vista machines so that the executable will run properly.
If we run the **NXCOMPAT** tool ([url removed, login to view]) on ONLY the executable ([url removed, login to view]), then copy that executable to the Program Files installation folder on a Vista machine, then try to run it ??" it will run. So this may be part of the solution.
However, when we tried to put the code as a post-build step in the setup project, it won’t work.
We’ve tried this on all of the combinations: post-build for the executable project; post-build on the setup project; post-build on both. None of these combinations has created an installer that, when run on a Vista machine, will install a working version of the software.
Here is an article about the NXCOMPAT flag:
> [url removed, login to view]