我在VS2015中创建了一个MSI安装程序项目,设置了所有项目,然后添加了文件扩展名与"文件类型编辑器"的关联,并将我的扩展名分配给我的应用程序,作为Open命令。
COMMAND是"应用程序文件夹"中的应用程序,设置了EXTENSION,然后将& OPEN设置为NAME =& Open,Arguments ="%1"动词=开放。没有其他的。
我生成了.msi文件,然后启动了。在安装结束时,我发现在注册表Computer \ HKEY_CLASSES_ROOT \\ shell \ open \ command键中有两个项目,一个是(默认)REG_SZ,值为" myexe" "%1"正如我所料
不幸的是还有另一项:"命令"," REG_MULTI_SZ"数据很奇怪,例如" LZ * a!t4(v = ++ Tt $)tOk_> [1jfrS!,nB`L6ciHLW!,"%1""我不知道它是什么。当我删除.msi文件,并双击带有我注册的扩展名的文件时,弹出对话框显示为"无法找到网络资源" Windows需要我的.msi安装程序(浏览对话框进来)!我不知道如何防止这种不必要的情况。 :(任何帮助都会非常感激!
答案 0 :(得分:1)
Windows Installer使用所谓的Darwin Descriptors来实现弹性,其中可以自动修复损坏的安装。您尝试删除.msi而不是卸载它就像一个损坏的安装,因此系统会尝试修复它。但是,由于.msi本身已被删除,因此必须寻求帮助。
这里的简短回答是建议您不要担心注册表项中的确切值。由于您使用的是Extension表而不是Registry表项,因此注册表是一个实现细节;你应该宁愿忽略这些细节。相反,如果在成功安装后,程序在双击相关文件时按预期启动,并且在正确卸载应用程序后停止这样做,一切都很顺利。