我有一个C#应用程序,它使用Visual Studio 2005中的内置MSI构建器.
在使用MSI(通过CD)将应用程序部署到目标计算机上之后,我启动桌面快捷方式(作为特权用户),程序按预期运行.但是,如果我以非特权用户身份退出然后重新登录并尝试运行该应用程序,则计算机会开始寻找MSI,因为它想要修复/配置它.当然这会失败,因为它无法再找到MSI.
但是,我可以浏览到Program Files中的应用程序文件夹,并将快捷方式复制到桌面并运行完全正常.
我该如何解决这个问题?我已经改变了许多设置试图绕过这个没有运气.
编辑:我有InstallAllUsers = True set.
正如解释在这里,在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