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

9 次查看(过去 30 天)
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 个评论
Adam
Adam 2018-7-10
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 2018-7-23
@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.

请先登录,再进行评论。

回答(2 个)

Soma Ardhanareeswaran
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 个评论
Jan
Jan 2018-7-6
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 2018-7-23
@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!

请先登录,再进行评论。


Mike Smith
Mike Smith 2019-7-25
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.

类别

Help CenterFile Exchange 中查找有关 File Operations 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by