My development environment previously used a FlexLM floating license on a Windows XP machine. Now I want to change the license to a node-locked license. Therefor I defined environment variable LM_LICENSE_FILE. But when I use the development environment I get the error that the license server is down or not responding. As license files it mentions the license server and the new license file. So, the new license file is added but still the connection to the server is used as first and only option. How can I tell the development environment that the license server is obsolete and should not be used anymore?
Each editor define if you could alone change the model license : floating to node locked. Some editors must send you a new licenses file to authorize this usage.
If you could alone change the model license, you must modify your option file associated with the license file.
The variable 'LM_LICENSE_FILE' give only the reference of the license server to use. There is no notion of model license.
Related
Why does a simple console app require administrative privileges?
program LTUpdate;
{$APPTYPE CONSOLE}
begin
WriteLn('Hello World');
end.
If I run this program from a command prompt nothing happens.
If I run the command prompt with administrative rights and then this program it outputs:
Hello World
Is there somewhere a checkbox in the project which sets the app to require administrative rights?
(The final program will connect to a database, get some fields and update it elsewhere, now I could do it via VCL... but I thought I'd try a simple console app this time.)
Your app is being compiled as 32bit, and lacks a UAC manifest containing a requestedExecutionLevel value, so UAC's "Installer Detection" feature kicks in, which is why your app requires elevation:
https://learn.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works
Installer detection technology
Installation programs are apps designed to deploy software. Most installation programs write to system directories and registry keys. These protected system locations are typically writeable only by an administrator in Installer detection technology, which means that standard users do not have sufficient access to install programs. Windows 10 and Windows 11 heuristically detect installation programs and requests administrator credentials or approval from the administrator user in order to run with access privileges. Windows 10 and Windows 11 also heuristically detect updates and programs that uninstall applications. One of the design goals of UAC is to prevent installations from being run without the user's knowledge and consent because installation programs write to protected areas of the file system and registry.
Installer detection only applies to:
32-bit executable files.
Applications without a requested execution level attribute.
Interactive processes running as a standard user with UAC enabled.
Before a 32-bit process is created, the following attributes are checked to determine whether it is an installer:
The file name includes keywords such as "install," "setup," or "update.
"Versioning Resource fields contain the following keywords: Vendor, Company Name, Product Name, File Description, Original Filename, Internal Name, and Export Name.
Keywords in the side-by-side manifest are embedded in the executable file.
Keywords in specific StringTable entries are linked in the executable file.
Key attributes in the resource script data are linked in the executable file.
There are targeted sequences of bytes within the executable file.
The simplest way to fix this is to add a UAC manifest to your app to specify an execution level:
Go to "Project Options | Application | Manifest"
Enable "Auto Generate"
Set "Execution Level" as needed (in this case, "As Invoker" will suffice).
Otherwise, you would have to either recompile your app as 64bit, or change its name and version resource to avoid the designated keywords.
when I use datastage to connect to informix database, there comes an error:
main_program: PATH search failure:
main_program: Error loading "orchinformix": Could not load "orchinformix": libifasf.so: wrong ELF class: ELFCLASS32.
main_program: Could not locate operator definition, wrapper, or Unix command for "infxread"; please check that all needed libraries are preloaded, and check the PATH for the wrappers
What may cause this problem? Wait for help. Thanks a lot!
The key part of the error messages is:
libifasf.so: wrong ELF class: ELFCLASS32.
You're running a 64-bit system (or, at least, 64-bit executables), but you have a 32-bit version of the Informix ClientSDK or Informix Connect libraries installed, and your orchinformix code is trying to load the 32-bit libifasf.so library, and failing.
To fix, you need to find out which libifasf.so your code is trying to use, and you need to find out whether there's a 64-bit version installed somewhere on the machine. If there's no 64-bit version, then you'll need to install it, of course.
You then need to adjust things so that the correct library is loaded rather than the incorrect one. It isn't clear what that'll take. Look carefully at the configuration and installation instructions.
Normally, libifasf.so and other Informix libraries are installed in either $INFORMIXDIR/lib or a sub-directory of that (e.g. $INFORMIXDIR/lib/esql or $INFORMIXDIR/lib/client). You may need to set the INFORMIXDIR environment variable to where the 64-bit software is installed, or you may have to play with other environment variables (LD_LIBRARY_PATH, DYLD_LIBRARY_PATH, SHLIB_PATH, etc), or you may have to tweak a configuration file (/etc/ld.so.conf or similar).
If this isn't sufficient help, please identify the platform (o/s and version) that you're using, and also where the Informix database server is running (is it the same machine or a different machine), and the versions of Informix database and connectivity that are in use. In this context, it is important that 12.10.FC4 and 12.10.UC4 are slightly different; the F indicates 64-bit and the U 32-bit Unix (and W would indicate 32-bit Windows). Please include all the version number information for the products.
Suppose I have Rails 4 app, call it "Super SaaS". Now my client says he likes my appvery much, but he doesn't want his data to be in the cloud. So he says he would buy a licience from me to deploy "Super SaaS" on his own server. More like Atlassian Jira.
The question is: is there any secure way(in terms of protecting source code) to do that?
While you can probably package up your code as a JRuby application with JAR files and Java byte code, there are decompilers for that, so you can never presume your source to be 100% secure.
Ideally you'd offer some sort of VM appliance that the customer can install, a system image compatible with VMWare or whatever virtualization system they're using. This helps package up a fairly secure environment, but won't protect against a determined adversary trying to get your source code.
If you're giving out your code to someone in any form, compiled or otherwise, you have to have a certain amount of trust. Even compiled executables are not immune to reverse-engineering.
I have a single executable which, via InnoSetup, installs into Program Files\FolderName by default. The exe has a 3rd party component which goes online to check for new versions and downloads them, then does a bit of fiddling to replace the exe - simple stuff. The problem is, it can't do this in Program Files because of the necessary security there. I was reading Windows 7 - Can't update my program's files in C:\Program Files in which David Hefferman gives a solution but then seems to say it's a bad idea - but I don't know whether the bad idea bit refers to his solution or to the OP's comments!
So what is the preferred method by which a program can update itself? One that will work on XPSP3 to Win8. I can't seem to find the right phrase to enter into Google that gives me relevant results. Ignore digital signatures and suchlike for now, for simplicity.
(Please note, it may look like I worded that as an opinion question but it's not - there must be some MS-endorsed way of doing it that I can't find. FWIW this is a Delphi program but any Win32 notes will do)
That 3rd party update utility needs to be run with administrative privileges, you can achieve that programmatically.
There is nothing wrong with installing your application in Program Files, that is the designated purpose of this folder. However, user data that is used by the application should be stored in a different location.
However you run that 3rd party Utility, you should first check the Windows OS version to see if fiddling with UAC is really necessary(Vista+...) and then run the utility in the elevated state.
He says its "extremely bad practice" to fiddle with your system so that normal users can write in "Program Files".
If your program is in "Program Files" it's installed with System Admin rights. So updates need also be installed with System Admin rights.
You can configure InnoSetup to request admin-rights so you can write to "Program Files" but if the 3rd party component does not do this its best to install everything in an other directory.
i.e. C:\Your_Program
That way your 3rd party component can write there.
There are several options here:
The easiest: make updater as a separate program with manifest, which requires admin privileges. Also you can ask for admin privileges when you start your updater. Or you can move your updater into out-of-process COM object instead of separate exe.
You can create hidden user with admin rigths during installation of your program. Then you will run your updater with credentials of this user.
You can install system service during installation of your program and this service will run from system account. So your updater will be implemented as a service.
I build a number of executable applications in Delphi 5 which talk to databases over a network. On my Windows 7 PC and other PCs they run without any warning but on some client PCs it gives an 'unknown publisher' warning which doesn't look professional and may be causing other permission issues.
My question is as follows:
Can anything be added to an application at design time e.g. in Version Info to make it a more trusted application. Is this actually possible in Delphi5?
Is there anything I must request from Microsoft as an application builder to help them trust my applications?
Failing the above, how do I disable the 'Trusted Publisher' warning in Windows 7? (apologies this is not a Delphi question)
Thanks
You need to sign your executable with a Code Signing security certificate. That is what the warning is referring to on those client PCs - Windows is not able to verify the integrity of the executable. The certificate identifies who created the executable, and also ensures that the executable has not been modified after you signed it.