It is not possible to remove file from Compiler Project in 2016b

8 views (last 30 days)
After deleting a file in the deploy tool, along with documentation, the file is automatically inserted back within a few seconds. Then it is included in compiled binary. Rel. R2016b.
Is it possible to remove the file permanently?
  9 Comments
Adam
Adam on 10 Jul 2018
I just tested this out actually and was surprised that a .mat file gets picked up as a dependency so I guess this was a change from years ago.
If you refer to the file you are loading via a relative path formed from e.g. a function then it does not get picked up as a dependency and you can add it where you wish.
I have a few files that I ship for end users though they vary in how I choose to do them. At last one I actually have a class whose function creates the file at the user end if it doesn't exist, thus eliminating the need to include an actual .mat or .txt file.
Others though I include in code with something like:
configFilename = fullfile( getMatlabHomeDir( ), 'config.txt' );
where getMatlabHomeDir( ) returns a folder that, in my case is defined in an environment variable that my end users must set, but equally I have other functions that make use of
doc ctfroot
with an isdeployed flag to return me a directory that I can use for a relative path depending whether I am in a deployed application or in Matlab itself.
doc mfilename
is also useful for this kind of thing to give relative paths. In a few places I have a function in a folder whose only purpose is to return me the address of the folder it sits in for me to use as a relative path whether my code is deployed or not.
Kaixiang Wang
Kaixiang Wang on 23 Jul 2018
@Adam Thanks for the reply. My understanding of your approach is, basically, to fool the dependency analyzer so it does not know the path to the data files? Quite a smart idea. I will give it a try.

Sign in to comment.

Answers (2)

Soma Ardhanareeswaran
Soma Ardhanareeswaran on 20 Oct 2016
I agree with Adam, the Dependency Analysis step would pick up the dependent files that are found in the current directory or from the MATLAB path and get included into the compiler project.
  5 Comments
Jan
Jan on 6 Jul 2018
Dear Kaixiang, there was no response from MathWorks or a solution for the problem. To work around I have added a possibility to load a new parameter file by a user.
The parameter file read by the program during its startup is located in a temporary directory of the user. There it is unpacked during the first program run. If you will replace the parameter file in this temporary dir it will be read correctly.
Kaixiang Wang
Kaixiang Wang on 23 Jul 2018
@Jan Hi Jan, thanks for replying! Eventually I managed to find a few ways, and yes, asking the user for an input location is one of them.
The other approach you mentioned could be a good idea too, but unfortunately not practical for my case. My .mat file is generated by another program which would not know the temp directory (across different machines).
Anyway, it is nice to discuss with you! Cheers!

Sign in to comment.


Mike Smith
Mike Smith on 25 Jul 2019
Hello,
I know it'a been a while since this question was posted but I thought I'd comment on my experience with this to keep it all in the same thread. I am using Matlab 2018a with deploytool to make a standalone application. I have a few lines in the app startup function that look for a file "locationOfConfig.m" that represents a Matlab variable (string) that is the absolute path to the actual configuration file. It uses this path to check for the file and if its not there the app launches a little configuration window where the user can make/edit the config file. Once the configuration window is filled out, the configuration file location ("locationOfConfig.m") file and the actual configuration file ("config.txt") are written.
Anyway, during compiling, it was annoying because my "locationOfConfig.m" file kept being automatically incorporated into the "Files required for your application to run" section. But I need the user to be able to generate their own unique file upon installation...not use my absolute path! To work around this, I simply save my local "locationOfConfig.m" in a location that is not set in the official Matlab path (Set Path) and then Matlab doesn't see it upon searching for dependencies. This allows me to compile without the Matlab-declared "dependent" file.
Hope that helps somebody out there.

Categories

Find more on File Operations in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!