Stability on target PC's

Archives Forums/Blitz3D Bug Reports/Stability on target PC's

Stone(Posted 2006) [#1]
On some systems, compiled program won't run at all.


Stone(Posted 2006) [#2]
I have a finished product that won't run on some systems.
I tried compiling this hello world, and even it won't run on those systems:

While 1
Print "Hello World " + i
i = i + 1
Wend


It's being tested at Microsoft and my publisher and it won't run on a Toshiba M4 tablet PC and also this system:

Operating System: Windows XP Professional (5.1, Build 2600) Service Pack 2 (2600.xpsp_sp2_gdr.050301-1519)
Language: English (Regional Setting: Hebrew)
System Manufacturer: INTEL_
System Model: D915GEV_
BIOS: BIOS Date: 04/29/05 21:08:57 Ver: 08.00.10
Processor: Intel(R) Pentium(R) 4 CPU 3.00GHz (2 CPUs)
Memory: 2038MB RAM
Page File: 671MB used, 3252MB available
DirectX Version: DirectX 9.0c (4.09.0000.0904)
DxDiag Version: 5.03.2600.2180 32bit Unicode


OldNESJunkie(Posted 2006) [#3]
Did you notice the post below ? Read & try that to see if this solvs the problem on the Tablet PC at least.


Stone(Posted 2006) [#4]
Just looked, I bet that's it!


Stone(Posted 2006) [#5]
Yes, that fixes it, but Microsoft (who wants to market my game) says:

"However, long-term, it needs to be properly fixed. In the future we're going to have some more stringent guidelines about good windows citizenship for apps being sold via MSN, and this type of thing wouldn't make the cut.

If you can get in touch with someone from Blitz3D and hook us up on email, I'd be happy to put them in touch with an engineer to help fix the issue.
"


Flame(Posted 2006) [#6]
Wooo, wait a min, you have contact with Mircosoft?! Nice.


Damien Sturdy(Posted 2006) [#7]
I have a contact at MS too. They told me to contact a "lawyer".....


Stone(Posted 2006) [#8]
// Here's a C program that I'm using as a work-around


// Fixup for B3D / Microsoft compatability
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <io.h>
#include <process.h>
#include <time.h>

#define TARGET_PROGRAM "_.exe"
#define COMMAND_LINE " test"
// Note the use of a space at the beginning of the command line

int RunAndWait(char *startup, char *ex, char *cl)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);

// Start the child process.
if(CreateProcess(ex, // module name
cl, // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
startup, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
== 0)
{
MessageBox(NULL, ex, "Error: Cannot run!", MB_OK);
return(0);
}

WaitForInputIdle( pi.hProcess, INFINITE );
SetCursor(LoadCursor(NULL, IDC_ARROW));
// Wait until child process exits.
WaitForSingleObject(pi.hProcess, INFINITE );

// Close process and thread handles.
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return(1);
}


BOOL DisableAdvText(char *FileName)
{
HKEY hkey;
DWORD dw;
static char Val[] = "DISABLECICERO";

RegOpenKeyEx(HKEY_CURRENT_USER,"",0,KEY_QUERY_VALUE,&hkey);
RegCreateKeyEx (hkey, "Software", 0L, NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL, &hkey, &dw);
RegCreateKeyEx (hkey, "Microsoft", 0L, NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,&hkey, &dw);
RegCreateKeyEx (hkey, "Windows NT", 0L, NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,&hkey, &dw);
RegCreateKeyEx (hkey, "CurrentVersion", 0L, NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,&hkey, &dw);
RegCreateKeyEx (hkey, "AppCompatFlags", 0L, NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,&hkey, &dw);
RegCreateKeyEx (hkey, "Layers", 0L, NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,&hkey, &dw);
RegSetValueEx(hkey, FileName, 0, REG_SZ, (const BYTE*)Val, sizeof(Val) + 1);
RegFlushKey(hkey);
RegCloseKey(hkey);
return TRUE;
}

BOOL EnableAdvText(char *FileName)
{
HKEY hkey;
RegOpenKeyEx(HKEY_CURRENT_USER,"",0,KEY_QUERY_VALUE,&hkey);
RegOpenKeyEx(hkey,"Software",0,KEY_QUERY_VALUE,&hkey);
RegOpenKeyEx(hkey,"Microsoft",0,KEY_QUERY_VALUE,&hkey);
RegOpenKeyEx(hkey,"Windows NT",0,KEY_QUERY_VALUE,&hkey);
RegOpenKeyEx(hkey,"CurrentVersion",0,KEY_QUERY_VALUE,&hkey);
RegOpenKeyEx(hkey,"AppCompatFlags",0,KEY_QUERY_VALUE,&hkey);
RegOpenKeyEx(hkey,"Layers",0,KEY_SET_VALUE,&hkey);
RegDeleteValue(hkey, FileName);
RegFlushKey(hkey);
RegCloseKey(hkey);
return TRUE;
}

int MutexExists(char *pMutexName)
{
// Attempt to create defualt mutex owned by process
CreateMutex(NULL, 1, pMutexName);

// Check success
if (GetLastError() == ERROR_ALREADY_EXISTS)
// Mutex was not created
return 1;
else
// Mutex was created
return 0;
}

// WinMain - main routine.
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{
char TheFile[256];
char folder[256];
char combuff[256];
// Check for previous instance of application
if(MutexExists("B3D Fix"))
{
// Display error message
MessageBox(NULL, "I'm already running!", "Error", MB_OK | MB_ICONERROR);
// Close current instance
return 0;
}

GetCurrentDirectory(sizeof(folder), folder);
strcpy(TheFile, folder);
strcat(TheFile, "\\");
strcat(TheFile, TARGET_PROGRAM);
DisableAdvText(TheFile);
strcpy(combuff, TARGET_PROGRAM);
strcat(combuff, COMMAND_LINE);
RunAndWait(folder, TheFile, combuff);
EnableAdvText(TheFile);
return(0L);
}