前段时间,我们通过MATLAB App Packager向用户分发了一个工具箱,以便更轻松地提供未来的更新,而无需用户处理搜索路径。现在,我们希望分发更新版本。通常,重新打包工具箱应该创建一个新的.mlappinstall文件,该文件要求用户升级。相反,MATLAB现在将应用程序的新版本视为一个独特的新应用程序,并再次安装它而不是升级。因此,用户将在“应用”窗格中将应用程序两次,一个在过时版本中,一个在新版本中。
我们无法在MATLAB文档中或在线找到对此的解释。当我们安装更新的应用程序(以便两个版本都出现在“应用程序”窗格中)时,进一步更改它将按预期升级它,所以不幸的是,我们无法提供最小的工作示例,因为我们无法重现该问题。
问题是: MATLAB如何建立应用程序唯一性?应用程序名称和作者字段与原始值相同,版本号递增,那么为什么MATLAB无法识别应用程序已安装?
答案 0 :(得分:1)
如果你有这种不连续性,你是否使用原始的.prj文件在Matlab的文件浏览器中点击它重新打包,或者你是否再次运行“Package App”并填写相同的属性?
我认为确定应用程序唯一标识的因素是“Package App”向导在幕后生成的GUID。如果您在Matlab GUI中打开现有的.prj,它将重新使用该GUID。如果再次运行“Package App”,无论您为各种开发人员可见的应用程序属性添加了什么,都将获得一个新的GUID。
你可以在.prj和.mlappinstall文件中挖掘自己看看。 (我无法在任何地方找到它记录;我只是戳了一下文件并做了一些试验和错误。)。prj只是XML,而.mlappinstall文件是一个带有“Open Packaging Convention”布局的zip文件。在.prj中,有一个包含GUID的param.guid
元素。在.mlappinstall中,它位于GUID
元素的metadata / appProperties.xml中。
如果您再次遇到同样的问题,请确保使用现有的.prj文件重新打包。或者如果你没有它,一旦你创建了新的.prj文件,从旧的.mlappinstall文件中挖掘出来自元数据/ appProperties.xml的旧GUID,并将其复制到新的.prj文件中,我认为它将表现为“相同”的应用程序。这甚至可以让您更改应用的名称和联系信息,它仍然可以安装在旧版本之上。