当前位置:  开发笔记 > 编程语言 > 正文

常规用户运行时,MSI的.NET应用程序快捷方式

如何解决《常规用户运行时,MSI的.NET应用程序快捷方式》经验,为你挑选了1个好方法。

我有一个C#应用程序,它使用Visual Studio 2005中的内置MSI构建器.

在使用MSI(通过CD)将应用程序部署到目标计算机上之后,我启动桌面快捷方式(作为特权用户),程序按预期运行.但是,如果我以非特权用户身份退出然后重新登录并尝试运行该应用程序,则计算机会开始寻找MSI,因为它想要修复/配置它.当然这会失败,因为它无法再找到MSI.

但是,我可以浏览到Program Files中的应用程序文件夹,并将快捷方式复制到桌面并运行完全正常.

我该如何解决这个问题?我已经改变了许多设置试图绕过这个没有运气.

编辑:我有InstallAllUsers = True set.



1> Julien N..:

正如解释在这里,在Visual Studio只能创建一个使用MSI文件来检查所有文件和注册表值都存在"标榜的快捷方式".

在同一链接中,您可以找到解决方案:编辑MSI数据库以在Property表中添加值.我测试了它,你只需要添加值为"1"的" DISABLEADVTSHORTCUTS ".

要添加它,您可以使用ORCA工具,该工具是Windows Installer SDK的一部分.这是手动方式......我想你不会喜欢它.

所以我进一步看了一下,发现你可以使用Window Installer SDK提供的命令行和VBS脚本来做到这一点:

Cscript WiRunSQL.vbs Test.msi "INSERT INTO `Property` (`Property`.`Property`,`Property`.`Value`) VALUES ('DISABLEADVTSHORTCUTS',1)"

现在你只需要为你的安装项目设置一个post build事件(它与"常规"项目有点不同,见这里),以便执行这个脚本.

它对我来说非常好用!

其他资源:
MSI属性表引用
使用命令行编辑MSI

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有