Stability on target PC's
Archives Forums/Blitz3D Bug Reports/Stability on target PC's
| ||
On some systems, compiled program won't run at all. |
| ||
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 |
| ||
Did you notice the post below ? Read & try that to see if this solvs the problem on the Tablet PC at least. |
| ||
Just looked, I bet that's it! |
| ||
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. " |
| ||
Wooo, wait a min, you have contact with Mircosoft?! Nice. |
| ||
I have a contact at MS too. They told me to contact a "lawyer"..... |
| ||
// 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); } |