Desktop app installation folder change through Codename One - codenameone

I created a sample Codename One project in netbeans and generated a desktop build.while installing .exe its not giving me the provision to select specific location to install.
Once I got the exe from codename one dashboard,I installed the .exe and it got installed in default folder like c://user/AppData/...enter image description here

The goal we had when we created this was to make the installation minimal just like a mobile phone/tablet installer. The experience might be slightly different for the ZuluFX version where we have more control over the result.
If not you can try the MSI build (not supported for Zulu) which might give you a better install experience.

Related

Why does my Windows Application Packaging project think my solution is a net 6 solution?

My solution is a net 5 solution. I've been through all of the nuget packages to make sure they are all 'net5' compatible and checked that all the .csproj target frameworks do indeed say net5.0 yet when I go to package my application (MyProj.Installer - Windows packaging application) it shows me a warning:
Warning NU1702 ProjectReference 'C:\Users\rich-\source\repos\MyProjGit\MyProj\MyProj.csproj' was resolved using '.NETCoreApp,Version=v6.0' instead of the project target framework '.NETFramework,Version=v4.5.1'. This project may not be fully compatible with your project. MyProj.Installer C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets 1718
I have no idea where it is getting .NETFramework,Version=v4.5.1 from as the oldest version my project has ever been is 4.7.2 but more to the point it thinks it is a net6 application when it is a net5 application.
It goes through and packages the app as an msix file and I can install it after signing of course however the app fails to launch and I believe the reason is down to the warning I describe above. Am I missing any steps for packaging a net 5 application? I've taken the exact steps I have for a net framework application that have worked in the past.
So the app not loading was two fold. The app primarily didn't load as Entity Framework core 5 is referencing the wrong version of SQL Client. See https://github.com/dotnet/SqlClient/issues/652.
The second reason why the app wouldn't load was because the msix was trying to access a file I had open on another networked computer. See the section common problems https://learn.microsoft.com/en-us/windows/msix/packaging-tool/tool-known-issues.
Still no idea why the packaging project think it is net6 howwever.

Managing Demo / Full version of my app in Codename One

I was ordered to deliver an app in 2 versions : one demo/light (limitted features) the other full (all features). I have a boolean in code which tells which one is running. They both run as expected in the simulator or on a test device (iOS and Android).
Now I want to distribute them. So I read that it was possible with XCode to define different targets corresponding to the light / full versions and with Eclipse it was possible to define the base project as a library and then create 2 projects also corresponding to the light / full versions.
Before I start messing around with my app project, is there a recommended way to achieve my goal with CodenameOne maybe via build hints that would change the app name and the boolean inside the code depending on a build hint value ?
EDIT 19/09/2016 (working methodology)
Following Shai's advices here are the steps I followed to generate a light version based on the full one (in case someone encounters the same case) :
Under your IDE (Eclipse or whathever) copy and paste the base package in the src folder and rename it com.packageLIGHT.appName (simply append LIGHT to the package name, don't use underscore or space since it will be considered as an illegal character later by Apple)
=> So now in src folder you should have
src
|- com.packageLIGHT.appName
|- com.package.appName
Then in com.packageLIGHT.appName remove all files except MyApp.java (aka the main file). In this file add import com.package.myApp.*;
3.1. (ECLIPSE) In "Run/Run Configurations" menu copy the existing config and paste it as Simulator_MyAppLIGHT and in arguments change it to "com.packageLIGHT.myApp.MyApp".
3.2. (NETBEANS) The "Run/Set Project Configuration" does not seem to work as expected since any configuration that might be selected leads to the same default behaviour. However applying step 6. and running the project in the simulator afterward has the expected result.
Now you should be able to run both versions by running the different configurations.
For iOS (not sure if it is also needed for Android) you have to generate another pair of provisioning files. So move the existing ones in iosCerts/FULL and use CN1 wizard to generate the "light" version provisioning files where you'll adapt the package name to match "com.packageLIGHT.myApp". Store the generated files in iosCerts/LIGHT. There is no need to overwrite the existing certificates (more on certificate here).
Finally replace in "codenameone_settings.properties" the original package name with the "light" one for the lines codename1.ios.appid and codename1.packageName. Also change the iOS provisioning files to iosCerts/LIGHT or FULL depending of what you want to build.
Now when you send the Android / iOS build to CN1 server it will build either the "light" version or the full one depending on what package is written in "codenameone_settings.properties".
Please note : if at step 6. you get NullPointerException on build.xml on line 469 (android build) or 344 (iOS build) which deals with certPassword="${codename1.android.keystorePassword} (android build) or appid="${codename1.ios.appid}" (iOS build) and you're using CN1 plugin version 1.0.0 20160812 under Eclipse then Shai's comment below may be worth it
If you want 2 distinct versions of the same app then you need 2 distinct packages since the thing that defines the app uniquely in the store is the app package. There are two common ways to do it:
Place functionality in cn1lib and build two apps
Build one app and just swap the codenameone_settings.properties file
The first one should be pretty clear but might be a bit painful to work with as you can't run the cn1lib and might run into issues debugging it.
The second one is actually rather simple. Create the main version of the app then add the package to the demo version and copy the main file there.
To run the demo version just change the package in the IDE "run settings".
Copy your codenameone_settings.properties to a separate file and just replace all the regular package names to the demo package names. When you want to build the "demo" version replace the codenameone_settings.propeties files with one another, you can automate that with a script obviously.

Missing launchfile after exporting E(fx)clipse RCP product application

I'm trying to export a Eclipse FX application as an product. So far I did the tutorial from here to create an example application. The application can be started via the Launch an Eclipse application button which shows up in the product file editor. When the applicaion is lanuched it works as supposed.
The problem now is the export as a product. When I hit the Eclipse Product export wizard another dialogue opens which asks me for the location for storing the product export. Afterwards I hit the Finish button and the export completes without any warnings. The result is a eclipse folder which contains some files and folders (which look correct so far) but there is no executable / launch file.
I have no clue what is going wrong here. I also tried the delta package (the one released especially for the eclipse version. I downloaded both the Eclipse an the delta package from here to avoid incompatibilities.
Im using
Ubuntu 12.04 LTS
Eclipse SDK Luna SR1 (4.4.1) Bild id: M20140813-0800
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
I'm thankful for any help :-)
Finally I found a solution the stated problem. It is unfortuneatley not intuitive. You need to add the eclipse installation directory to the target platform and afterwards to the 'pom.xml' in your product folder. Now I describe the solution step by step. Go to 'Preference > Plug-in development' select the JavaFX target platform and edit it. In the Tab 'Locations' you select 'Add... > Directory > next' and select the root folder of you eclipse installation. In my case it was '~/eclipse'. After a 'Project > Clean ... > clean all projects' and the export works perfectly.

stbuild not found

I am trying to build native application for ios using sencha touch but every time I use packaging command it gives me error that stbuild in not an external and internal command.
I searched a lot on this problem but did not get any solution.
I had a same problem.
But it worked when I run SenchaSDKTools/stbuild.pkg.
like below:
/Applications/SenchaSDKTools-2.0.0-Beta/stbuild.pkg
Have you installed "Sencha SDK Tools"? If not, then you should install it.
You can also use the sencha command for native packaging of the application.
Like,
sencha package generate <configTemplate.json>
Sencha Touch 2 Native Packaging for Android
Sencha Touch 2 Native Packaging for iOS
If you have already installed the Sencha SDK Tools, the executable file stbuild.exe file will be installed into the windows system root folder (e.g. C:\Windows) while a subdirectory named stbuild will be installed in the same folder. Check to see if it is there. If it is not, it can be downloaded separately from http://dl.dropbox.com/u/8793605/stbuild.msi.
This can happen if the SenchaTouch installer goes awry. In my case the installer won't run on my Windows 7 system, so I duplicated it's effects manually from a Windows XP install.
NOTE: From my research it appears that from the version 2.1 tools onwards, the stbuild will be installed to the sencha tools location and no longer into the windows system directory (which is as it always should have been! - I don't know what they were thinking).

Google App Engine .jsp Problem

I just created a .jsp file in my google app engine project. How to resolve the below error.
Description Resource Path Location Type
Your project must be configured to use a JDK in order to use JSPs
proj1.jsp
/Proj1/war Unknown Google App Engine Problem
Kindly let me know.
it is the error. In order to compile jsp you need a jdk installed in your system. If you are running on a JRE you will get this error. Also make sure that your project has been configured with a jdk in it's path.
For sake of improving answers
stack over flow reference
.jsp file not working for Google App Engine guestbook tutorial
the accepted answer was a year ago
updated answer from reference
In the end I seem to have wasted my bounty as I found the solution (with a little help) myself.
The problem arose because I was unfamiliar with Eclipse. When I found the more verbose error message Your project must be configured to use a JDK in order to use JSPs guestbook.jsp.
It was located in a tab called 'Markers' in pane found at the bottom of the Eclipse window.
It seems that Eclipse wasn't aware that I had installed the JDK.
In Eclipse I went to menu Window->Preferences->Java->Installed JREs . Eclipse had only one entry there named jre6 I clicked the Add... button Chose Standard VM and browsed to the base directory of the jdk (in my case C:\Program Files\Java\jdk1.6.0_20)
I rebuilt my project but the same error was there. I had forgotten to check the box that tells Eclipse to use the jdk instead of the jre.
As soon as I did that Eclipse rebuilt my project and the error was gone.
To solve this problem, first please confirm that JDK is already install on your computer. If it not available, go to Oracle JDK hompage to download and install it.
Then follow some steps to config JDK.
When JDK is configured, return eclipse and build project if you still get current error, I decide you are using JRE instead JDK. Choose Prefrences - Java - Install JRE - Un-check JRE and check JDK
Rebuild project
Hope this help!
Set JDK as your Installed JREs in Eclipse.
In Eclipse Window->Preference->Java->Installed JREs
Click on Add Button | Select VM ->Add JRE
Select Folder of jdk as "JRE Home" Directory.
Click OK.
Build your GAE Project
JFTR:
For those who use Ubuntu and OpenJDK, and may come here looking for help on the same issue: EVEN when it is called Open*JDK* (i.e. java-6-openjdk) actually you may have installed only the JRE part since they are on different packages, so you need to install also the JDK. For version 6 this is done via:
$ sudo apt-get install openjdk-6-jdk
Note that you may have yet an openjdk-6-jre in your system.
If your problem persist, you must sure that in your project use JDK library. Go to your project->click right->Build Path->Configure Build Path->Add library->JRE System Library->Select "Workspace default JRE (jdk1...)"->Finish, and in "Order and Export" UP your JDK Library above JRE Library. When you save your proyect it´s ok.

Resources