windows 开始菜单中的快捷方式 - Matlab 可执行文件

shortcut in the windows starting menu - Matlab executable

我创建了一个基于 gui 的可执行文件,其中包含多个函数和文件,如果我在安装文件夹中打开可执行文件或使用桌面快捷方式,一切正常。如果我通过开始菜单打开,可执行文件不会包含图像,也不会 运行。我能做些什么来防止这个问题?是否可以在 windows 开始菜单中阻止快捷方式?

我找到了解决方案 here:

您可以使用以下函数获取执行的exe文件的文件夹:

function currentDir = getcurrentdir()
if isdeployed % Stand-alone mode.
    [status, result] = system('path');
    currentDir = char(regexpi(result, 'Path=(.*?);', 'tokens', 'once'));
else % MATLAB mode.
    currentDir = pwd;
end

在GUI打开函数中调用函数并使用cd

currentDir = getcurrentdir();
cd(currentDir);

我创建了一个 guide 测试应用程序,并使用 deploytool 进行编译和打包以供外部部署。

为了测试,我在 GUI 中添加了一个文本标签(标签名称:text2)。

在GUI打开函数中我添加了以下代码:

% --- Executes just before GuideApp is made visible.
function GuideApp_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;

handles.text2.String = 'Starting...';
pause(1);
currentDir = getcurrentdir();

%Set the label's text to display currentDir.
handles.text2.String = currentDir;

%Change directory to the directory of the exe file.
cd(currentDir);

%Create a file in the directory (just for testing):
f = fopen('currentDir.txt', 'w');fprintf(f, '%s\r\n', currentDir);fclose(f);

% Update handles structure
guidata(hObject, handles);

以上解决方案工作正常:
标签的文字显示了exe文件的路径。
currentDir.txt 文件创建在exe文件的路径下。