where are images stored inside programs? - c++

i'm new to programs so bear with me
For example, Firefox.. I go to the C/program files/mozilla/firefox folder ..but I don't see the images/buttons they used for the default theme of the program
Also, photoshop and other programs: how are the buttons, images, and other media stored (not in a folder from what I see)?
same thing when I made a simple program in visual c++, i don't see where the icon is located at?
thanksvery much

Images are usually stored as resources in DLL or EXE files.
You can see the resources by opening a compiled binary in Visual Studio.
Firefox stores images in JAR files for skins.

In the resource section of the executable file. This section of file acts as an embedded storage location which is indexed by the resource table.
You can use a program such as ResHacker to browse or even change native embedded resources.

Related

Is there a way to create a folder that is interpreted by the OS (Windows, OS, Linux) as a single file?

The reason why I need this is because for example: There are a lots of files and folders inside a "some_important_folder" folder. User can usually browse to "some_important_folder" folder and go deeper into it to see its' subfolders and files like in any normal file explorer can do. But since in my use case, the user doesn't need to interact with the files and folders in "some_important_folder" folder at all. Therefore, I was wondering if there is any way to hide the complexity of the folders in "some_important_folder" folder and show to user as a single file only. But my programs (written in C++) can still somehow access the files and folders in it like normal such as: "C:\Users\user\Documents\some_important_folder\someFolder\someFileThatUserDoesntNeedToKnow.exe"
Something like .rar or .zip file but since the "some_important_folder" folder might be very big in size (more than TB), I don't think it would be good to convert the whole folder to a .zip file as it would take lots of redundant space from the hard disc and the process would be very slow
Have you considered encrypting your folders? That way if you wanted to only access the folder using your C++ app, you could pass down the password/decrypted for it, making your app the only access point you'd have to that folder.
Yes, both windows and linux have similar technology.
On windows, you can use "Compound File Binary Format". It is a general-purpose file format that provides a file-system-like structure within a file for the storage of arbitrary, application-specific streams of data. In fact, ealier office doc file format is based on this technology. The following is the doc link from microsoft and wiki. And I believe you can google some sample code.
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-cfb/53989ce4-7b05-4f8d-829b-d08d6148375b
https://en.wikipedia.org/wiki/Compound_File_Binary_Format
On linux, you can loop mount a file as file system as #stark mentioned. You can google "linux loop mount file", the following is the first article I found:
https://www.jamescoyle.net/how-to/2096-use-a-file-as-a-linux-block-device

How to add a group-accessible shared file folder to the Files folder in E.G.?

I want to have a shared folder inside my SAS server. Very much like a library but where a small group can store and share .sas code files and browser them inside the SAS Eguide.
I don't want stored processes, because people should directly access and edit the source code inside there local eguide flow.
Can I add a folder to the Files folder?
On the file system, add a symlink/short cut to the shared location where the files folder points.
In your Enterprise Guide, if it has the same standard setup as mine,
you can save a PROJECT which file extension is .EPG directly in your metadata server.
Since a project is a collection of sas programs.
"Shared Data", that is present in every metadataserver configuration, is the metafolder where you can create a folder, if you have the permissions, where save your project that can be shared with anyone of your group that can have permissione to read/write that metafolder.
I suggest this way since it's a way to embed and share easily projects, and so sas programs.

How to use Jetbrains Webstorm with Citrix

I cannot use Webstorm on my Citrix account because the screen isn't rendered properly. It is not easy to describe, it looks like a screen refresh would help. When I scroll through the source, the lines appear one by one, but some regions of the gui (icon, menues,...) are never shown.
Not likely the answer you would expect, but I can only suggest installing WebStorm on a local machine and working with source files located on local drives. All IDE functionality is based on the index of the project files which WebStorm builds when the project is loaded and updates on the fly as you edit your code. To provide efficient coding assistance, WebStorm needs to re-index code fast, which requires fast access to project files. The latter can be ensured only for local files, that is, files that are stored on you hard disk and are accessible through the file system.
Moreover, the fsnotifier tool IDE uses to synchronize its virtual file system with external changes doesn't support remote drives, so you might have problems synchronizing files generated by LESS/SASS compilers and other external tools...
See also https://community.oracle.com/thread/1353486

Embedding project folders(lua) into exe

I searching for a long time how to embed project files like folders (with lua scripts and images) into exe.
Basically i have some folders which are needed to run my game and i want to hide them somehow. Because now they are opened and can be easy edited by everyone.
I saw method in which folders have been changed to .dll file to protect them.
Using visual studio 2013.
I'll be very thankful for an answer.
You can use PhysicsFS, which allows to map a hierarchical filesystem to an archive. From the project page: "It is intended for use in video games, and the design was somewhat inspired by Quake 3's file subsystem." It's used by some open-source Lua frameworks (for example, Love2d), so you may check how they implemented the integration and access.
This doesn't guarantee full protection (nothing does), but it will at least make it more difficult for the users to make changes to those resources you want to protect.

Resource File VS2010: Images missing when copying product

I am creating a c++ dll which includes some images in the png format using VS2010. This works fine as long as I keep the dll on my developer machine. When I try to copy the dll to another machine the images are missing.
When I compile my project, a file called app.res is placed in the build directory. If I look into that file, it seems to contain some binary encoded pngs. The project settings contain a entry called "Resource File Name" in the "Resources" section. The value is "app.res". Therefor I assume that my resources are added to the dll. However, it apperently doesn't work that way.
Does anyone have any ideas what could be wrong here?
Does anyone know of any good instructions on how to deals with resource files in VS2010. The Microsoft documents just didn't help much..
The linker embeds the .res file in the DLL. Verify this with File + Open + File, select your DLL, you can browse the embedded resources. There is otherwise no mechanism to make embedded resources disappear when you copy the DLL, they are firmly embedded.