Closed megatron-uk closed 5 years ago
Hopefully easy and quick, but in the mean time a simple hosts file or campus firewall change will be a temporary measure.
ok so the request is to stop gdevelop from prompting the user about an update when autoupdate is disabled
Yes, I think we need 3 options. Automatic Update, Check and warn, don't check (with a warning by the option that they will need to check the website) 🤔
The 3 options would be ideal yeah, otherwise removing the prompt would be a good first step.
That sounds like an ideal solution; removing the prompt would be a good stop-gap measure, but ultimately presenting (or having them pre-configured by ini file or command line argument) the three options to the user would be great.
I made a tiny pull here https://github.com/4ian/GDevelop/pull/887
I think it should disable the prompt by default. It was literally one line, so not sure if its even pull worthy
Anyways I am super happy that GD is going to be used by students and also excited to see student projects made with it. Usability feedback is very much appreciated, as it will help us make the editor more user friendly.
Btw, if you want me to I can look into having the update prompt be disabled by a cmd parameter instead of having it disabled by default. So for example if you start gdevelop with
GDevelop 5.exe --disable-update-check
that would prevent the prompt
Btw, if you want me to I can look into having the update prompt be disabled by a cmd parameter instead of having it disabled by default. So for example if you start gdevelop with GDevelop 5.exe --disable-update-check that would prevent the prompt
I think that would be more interesting :) Part of the idea behind GDevelop 5 was to migrate to a more recent technology stack, and the auto update is one key part of the success of GDevelop 5. As I'm able to deliver new versions more often, allowing faster iterations and improvements, it's also key to keep people on latest versions :)
In this regards in think it's better if we can come up with some command line to disable the auto update check :) Should not be that difficult, it's an argument to read, arguments should already be used in a few place, check const appArguments = Window.getArguments();
in LocalApp.js, and see how to use it to disable the update check ;)
Let me know if you take a look at this, I can help if needed.
As @blurymind said, I'm also super happy to have GDevelop being used to teach a games engineering programming module! I think it's a great tool for this, and it can even go further with the JS capabilities :)
I think I will have something working later tomorrow :) @megatron-uk please note that you may have to change the desktop shortcut file on windows to have the --disable-update-check parameter. Should be easy to do and in theory - just by overwriting gdevelop's desktop shortcut file on all laptops with a custom one https://www.digitalcitizen.life/pin-shortcuts-parameters-taskbar-or-start-menu
Another idea is to have gdevelop also available as a portable single executable version that doesnt autoupdate. I haven't tried it with gdevelop yet, but I've been able to built tiny test electron apps with
build --win portable
electron builder has
process.env.PORTABLE_EXECUTABLE_DIR
I wonder if we can use it to check that way :)
That would require to start deploying a portable version of gdevelop - I am not sure if that is what you want and haven't seen if its doable easily yet.
I personally like the single executable approach, as it makes it very simple to have multiple versions of an app without worrying about paths or admin rights- its also great for running off a flash thumb
Thanks guys, I didn't get a chance to look at this today, but we've already got a version ready to go out via SCCM. I'll get that updated next week with the new shortcut options and push out to our test lab.
One interesting aspect that we did come across is capturing user data using UEV - it seems as though the agent isn't clever enough to work out which processes (not "gdevelop 5.exe") are altering user data behind the scenes and won't then sync them to the users persistent network home drive. In case you haven't come across it yet, UEV is the replacement for roaming profiles in Win 10 and above.
Not an issue with GDevelop per se, I think it may be more of an Electron/Chromium thing.
I'll report back as soon as we have some test machines getting the new version.
Thanks again, John
via SCCM
lol, I was playing with SMS back in the 90's at IBM, thank you for bringing back some fun memories 😄
@megatron-uk I added the ability to disable the updater via a cmd parameter in a pull request. I think that what would be even better though is to have the entire default factory settings that gdevelop installation comes with externalized somehow. So for example when starting, gdevelop-electron could check if in its install folder there is a factorySettings.json file and use that instead of values in preferencesContext.js. That would make it even easier to ship it with custom preferences to many machines
just another idea :)
If you use SCCM, in the official documentation it says that you can add custom parameters to apps: https://docs.microsoft.com/en-us/sccm/apps/deploy-use/create-applications#bkmk_manual-app
@megatron-uk this is now merged and should be available in the next build. If you find that it works for you, can you let us know to close the issue? If not we will look into another approach.
Also once you have students making things in GD, can you please share some photos and projects? It will really help us with promoting gdevelop and getting more people on the development board. :)
I confirm that it would really interesting to see how GDevelop is being used, and we can feature this on the education page of the website :) Will release a new version hopefully not too late.
Hi, I'm having trouble getting the newest git pull to compile, in order to test the above additions.
[ 16%] Building CXX object Core/CMakeFiles/GDCore.dir/GDCore/IDE/Dialogs/ChooseObjectDialog.cpp.obj
[ 16%] Building CXX object Core/CMakeFiles/GDCore.dir/GDCore/IDE/Dialogs/ChooseObjectTypeDialog.cpp.obj
In file included from C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/msw/uxtheme.h:16,
from C:\temp\GDevelop\Core\GDCore\IDE\Dialogs\ChooseObjectTypeDialog.cpp:32:
C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/msw/private.h: In destructor 'ClassRegistrar::~ClassRegistrar()':
C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/msw/private.h:798:52: error: cannot convert 'const wchar_t*' to 'LPCSTR' {aka 'const char*'}
if ( !::UnregisterClass(m_clsname.t_str(), wxGetInstance()) )
~~~~~~~~~~~~~~~^~
In file included from c:\mingw\include\windows.h:48,
from C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/msw/wrapwin.h:65,
from C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/atomic.h:48,
from C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/sharedptr.h:14,
from C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/dialog.h:16,
from C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/msgdlg.h:18,
from C:\temp\GDevelop\Core\GDCore\IDE\Dialogs\ChooseObjectTypeDialog.cpp:18:
c:\mingw\include\winuser.h:4319:42: note: initializing argument 1 of 'BOOL UnregisterClassA(LPCSTR, HINSTANCE)'
WINUSERAPI BOOL WINAPI UnregisterClassA (LPCSTR, HINSTANCE);
^~~~~~
In file included from C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/msw/uxtheme.h:16,
from C:\temp\GDevelop\Core\GDCore\IDE\Dialogs\ChooseObjectTypeDialog.cpp:32:
C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/msw/private.h: In function 'wxString wxGetFullModuleName(HMODULE)':
C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/msw/private.h:875:17: error: cannot convert 'wxStringBuffer' {aka 'wxStringTypeBuffer<wchar_t>'} to 'LPSTR' {aka 'char*'}
wxStringBuffer(fullname, MAX_PATH),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from c:\mingw\include\windows.h:44,
from C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/msw/wrapwin.h:65,
from C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/atomic.h:48,
from C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/sharedptr.h:14,
from C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/dialog.h:16,
from C:/temp/GDevelop/ExtLibs/wxwidgets/include/wx/msgdlg.h:18,
from C:\temp\GDevelop\Core\GDCore\IDE\Dialogs\ChooseObjectTypeDialog.cpp:18:
c:\mingw\include\winbase.h:1767:56: note: initializing argument 2 of 'DWORD GetModuleFileNameA(HINSTANCE, LPSTR, DWORD)'
WINBASEAPI DWORD WINAPI GetModuleFileNameA (HINSTANCE, LPSTR, DWORD);
^~~~~
Core\CMakeFiles\GDCore.dir\build.make:930: recipe for target 'Core/CMakeFiles/GDCore.dir/GDCore/IDE/Dialogs/ChooseObjectTypeDialog.cpp.obj' failed
mingw32-make[2]: *** [Core/CMakeFiles/GDCore.dir/GDCore/IDE/Dialogs/ChooseObjectTypeDialog.cpp.obj] Error 1
CMakeFiles\Makefile2:583: recipe for target 'Core/CMakeFiles/GDCore.dir/all' failed
mingw32-make[1]: *** [Core/CMakeFiles/GDCore.dir/all] Error 2
Makefile:128: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
C:\temp\GDevelop\Binaries\build>
This is on Windows 10 Enterprise 1709, with mingw as follows:
c:\MinGW\bin>mingw32-gcc.exe -v
Using built-in specs.
COLLECT_GCC=mingw32-gcc.exe
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/8.2.0/lto-wrapper.exe
Target: mingw32
Configured with: ../src/gcc-8.2.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --prefix=/mingw --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-8.2.0-3' --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --with-isl=/mingw --enable-libgomp --disable-libvtv --enable-nls --disable-build-format-warnings
Thread model: win32
gcc version 8.2.0 (MinGW.org GCC-8.2.0-3)
Anything particularly special I need to do to get this to build cleanly on Windows? A particular version of mingw32 or cmake perhaps?
You're trying to compile GDevelop 4 :) How did you find the instructions to compile? You should follow this: https://github.com/4ian/GDevelop/blob/master/newIDE/README.md
Also, maybe just wait for the next version, could save you some time I think
Just followed the normal convention to git clone the top level repo and looked at where the auto builder was running cmake from. Though I now see that the new IDE is down in a sub-folder :)
I see, I'll probably remove the CMakeLists from the root at some point when I'll do some cleanup to remove GD4 editor (will keep it on a separate branch though in case), so that it will avoid such confusion :) Most of the changes on the IDE, can be run by following the README I linked, as it's based on Electron/Node.js/JavaScript. So recompilation might be needed from time to time (, but normally not for these changes.
Ok. Will wait for next release rather than building and packaging ourselves. Got enough other things to be getting ready for semester 2 teaching in February :)
The new command line option is in beta 63 :) https://github.com/4ian/GDevelop/releases/tag/v5.0.0-beta63
It's a "testing version" but should be good to use, especially if you start working on new game. Anyway I hope to have a stable version in the next days/weeks.
Brilliant, I'll get that pushed out to our test machines today before deploying to our teaching labs.
Thanks, John
Hi - looking at beta63 today, and the update popup definitely looks to be suppressed by default, however, if you run from a command prompt, we see the following output:
C:\temp\gdevelop>"GDevelop 5.exe" --disable-update-check
[13:30:22.445] [info] GDevelop Electron app starting...
[13:30:33.826] [info] Starting check for updates (with auto-download if any)
[13:30:33.849] [info] Checking for update
[13:30:33.849] [info] { message: 'Checking for update...', status: 'checking-for-update' }
[13:30:35.164] [info] Update for version 5.0.0-beta63 is not available (latest version: 5.0.0-beta62, downgrade is disallowed.
[13:30:35.164] [info] { message: 'Update not available.', status: 'update-not-available' }
Is the behaviour to still check for an update, but just not prompt? What happens if it does find an update? I haven't configured any of the three preference boxes in the application - this is a fresh install.
John
If it finds one and the command is passed, it should not prompt you at all. And if not confirmed, the prompt shouldn't trigger an update. We need to wait for an update to be released to be sure of course. The idea is that if the prompt never appears, an upgrade can not be triggered. The advanced user who ran it from console will still be notified if an update is available -in the cmd log. My assumption is that students are not going to run it with a terminal like you do- you will attach that parameter to their start menu launcher
Perhaps it should be called --disable-update-prompt
instead. Or should we disable the checking as well?
Just fixed a bug where the first argument passed to GDevelop was ignore, hence why we thought that --disable-update-check
was not working. If you can't wait for the next version, you can already "hack" this by entering the argument twice: --disable-update-check --disable-update-check
. GDevelop won't, as intended, check for updates.
We are deploying GDevelop 5 in a University teaching lab environment on some >500 Windows 10 shared workstations for an introductory games engineering programming module.
We want to ensure that all versions of the software across these systems are the same, as such having the application check for updates automatically (even if they don't apply them automatically) is a huge pain for us.
Can you please advise if there is a command line flag for gdevelop5.exe, or a registry fragment that can stop it from checking every time the application is started?
Even if the update is not applied automatically by having that option turned off in the user preferences, having it check and prompt the users by default is really quite confusing. The worst case scenario of multiple user-installed versions under C:\Users\ and a globally installed one under "C:\Programme Files"... could get really messy quite quickly.
Hopefully this is an easy one to resolve!
John