Share via


IExpress utility on Windows 10 produces exe not compatible with minor os versions

Question

Thursday, September 7, 2017 7:52 AM

Hi guys,

I'm fighting with one problem using IExpress utility to create a self-extractor executable for my application. If I run it on Windows 10, the packet generated cannot be used on old Windows version (Windows Xp), but I need to have that compatibility.

Searching throught the internet I've found an article on Microsoft web site which talks about my same problem, but related to Windows 8. And for this reason it suggests to download an hotfix (here the link)

I'm scared to install the hotfix on my Windows 10 installation, so I'd like to know if someone has a good idea or an alternative solution.

http://myitside.blogspot.com

All replies (5)

Monday, April 23, 2018 12:47 PM âś…Answered | 1 vote

Just to close this matter, also if a lot of time is gone...

Fix doesn't work on Win10, so the only way to not change the core setup scricpt was to use an old IExpress to build the final self-extracting executable..

B.R.

http://myitside.blogspot.com


Tuesday, September 19, 2017 6:36 AM

Hi Hyde,

thanks for posting here.

>>I'm fighting with one problem using IExpress utility to create a self-extractor executable for my application. If I run it on Windows 10, the packet generated cannot be used on old Windows version (Windows Xp), but I need to have that compatibility.

I'm scared to install the hotfix on my Windows 10 installation, so I'd like to know if someone has a good idea or an alternative solution.

As Microsoft committed, there is an error in express.exe on Windows 8 / Server 2012. The self extracting packages has dependencies to msvcrt (function memcpy_s and except_handler4_common) which is not available in mcvcrt.dll on Windows XP SP3.

You don't need to be afraid of the hotfix, you do not have to make any changes to the registry. And this hotfix is intended to correct only this problem.

Maybe you could also try ClickOnce Deployment for Visual C++ Applications. Here is a document for you as a reference.

https://msdn.microsoft.com/en-us/library/ms235287.aspx

Hope this could be help of you.

Best Regards,
Sera Yu

MSDN Community Support Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact [email protected].


Tuesday, September 19, 2017 6:59 AM

Hi Sera,

unfertunately when I tried to run the hotfix, I get an error due to "wrong platform". The hotfix is a file called Windows8-RT-KB2846774-x64.msu that It cannot be installed on Win10...

And no fixes for my platform I've found..

http://myitside.blogspot.com


Thursday, September 21, 2017 7:02 AM

@Hyde,

If you cannot install that hotfix, then you may have to consider create a different setup based on some setup technologies. There are installshield,wix and also clickonce.

To detect whether the error is related to msvcrt mentioned by Sera.  You can try use ProcMon to catch logs when you run your setup in Windows 8 / Server 2012. If it report that the setup error is due to that specific dependency, as we cannot change this dependency from IExpress.exe, I think the best choice is to use some other technology to package your setup.

Best regards,

Barry

MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact [email protected].


Saturday, June 16, 2018 12:55 PM

Make the exe for each version of windows

run this in a batch i got this from stackoverflow. but edit what happens after the   if 

maybe something like 

if "%version%" == "10.0" C:\fileName.exe 

IExpress will also convert batch into exe.

@echo off
setlocal
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" == "10.0" echo Windows 10
if "%version%" == "6.3" echo Windows 8.1
if "%version%" == "6.2" echo Windows 8.
if "%version%" == "6.1" echo Windows 7.
if "%version%" == "6.0" echo Windows Vista.
rem etc etc
endlocal