从VS.NET MSI安装程序项目为所有用户安装快捷方式

我在这里搜索和搜索过。 我试过以下方法没有运气:

将项目安装程序设置为 – InstallforAllUsers(不记得确切的名称),但确实将快捷方式添加到所有用户的菜单,但只有安装该应用程序的用户才能运行它。 其他用户收到SysWOW64错误,无法安装它或其他东西。

再次设置[DesktopFolder]或[AllUserStartMenu],我可能没有正确的这些属性名称,但是我从这里发布的一些用户那里跟踪了它们。 赋予这些属性ALLUSERS的价值。 安装程序中的安装程序失败,并显示“无法找到网络位置1”或类似的内容。

使用ORCA编辑MSI文件并添加要为所有用户安装的属性,并在ORCA内部失败,并且无法添加属性。

这令人抓狂。 我正在使用Visual Studio 2010.我想我只是在推动这个问题的极限。想象一下。 我的安装是一个桌面应用程序(winforms),它有一个自定义安装程序操作和类,它将一些值写入用户在安装期间选择的设置文件(自定义UI安装程序屏幕)。

有任何想法吗?

MSDN站点,解释如何执行此MSI安装所有用户

部署项目的InstallAllUsers属性确定是为计算机的所有用户安装应用程序,还是仅为执行安装的用户安装。 在解决方案资源管理器中选择部署项目时,可以在“属性”窗口中设置InstallAllUsers属性。

设置

False – 仅为当前用户安装应用程序,并且该计算机的其他用户不会看到该应用程序(默认设置)。

True – 将为所有用户安装该应用程序。

InstallAllUsersVisible属性

“安装文件夹”用户界面对话框的InstallAllUsersVisible属性确定在安装期间是否为您自己或使用此计算机标签的任何人以及相应的Everyone和Just me选项按钮显示“安装MyApplication”。 在用户界面编辑器中选择“安装文件夹”节点后,可以在“属性”窗口中设置InstallAllUsersVisible。

设置

True – 安装期间将显示为您自己或使用此计算机标签以及相应的Everyone和Just me选项按钮的任何人安装MyApplication,并且用户的选择决定了安装方法。

错误 – 在安装过程中,将无法看到为您自己或使用此计算机标签以及相应的Everyone和Just me选项按钮的任何人安装MyApplication。

================================================== =========

因此,这里是为默认情况下为Everyone安装的操作步骤,而不会为安装产品的用户显示单选按钮选项:1。在解决方案资源管理器中单击您的安装项目。 2.在“属性”窗口中查找并将属性InstallAllUsers设置为True 3.单击“解决方案资源管理器”工具栏中具有弹出工具提示“用户界面编辑器”的图标4.单击“安装文件夹”中的“安装文件夹”项。出现的面板。 5.在“属性”窗口中查找并将InstallAllUsersVisible设置为False。 6.重建您的解决方案。

我刚刚为您做的快速搜索尝试了一些其他补充说明..

我正在网上搜索这个问题的答案,我发现答案隐藏在微软的网站上。

您将需要Microsoft的Orca.exe。 它是一个MSI数据库编辑器。 (http://msdn.microsoft.com/library/de…p/orca_exe.asp)我看到获取此文件的唯一方法是安装Windows Installer SDK(http://www.microsoft.com/) msdownload / … MSDK / sdkupdate)。

完成构建.MSI文件后,需要使用Orca.exe打开它。 打开后,转到“属性”表。 从菜单中,单击“表格”,然后单击“添加行”。 对于“Property”字符串,输入“ALLUSERS”,对于该值,输入“1”或“2”。 输入“1”将导致安装程序尝试将快捷方式添加到“所有用户”,如果当前用户没有权限则失败,“2”将导致安装程序首先尝试“所有用户”,然后进行故障转移到他们的个人文件夹。 有关详细信息 – http://msdn.microsoft.com/library/de…stallation.asp

我在“用户桌面”和“用户的开始菜单”上进行了测试,它对两者都有效。 提醒您:如果您重新构建MSI文件,它将删除“ALLUSERS”属性条目,因此您必须使用Orca.exe并在每次重新构建时重新添加该设置。

我知道这是一个古老的问题,但我之前已经做过这件事,当我最近再次这样做时,我已经忘记了如何做。 由于我的直觉是在深入研究旧的安装程序项目之前要查看SO,我想我最好得到答案。

以下是我如何做到这一点:

  1. 在您的启动条件中添加注册表搜索:

    在此处输入图像描述

    • (名称):搜索所有用户程序菜单
    • 物业:ALLUSERSMENU
    • RegKey:SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell文件夹
    • Root:vsdrrHKLM
    • 价值:共同计划
  2. 在文件系统编辑器中创建一个新的目标文件夹并利用您的新属性:

    在此处输入图像描述

    • (名称):所有用户程序菜单
    • AlwaysCreate:是的
    • DefaultLocation:[ALLUSERSMENU] \ YourMenuHere
    • 物业:MENULOCATION
    • 传递:错误
  3. 将快捷方式放在该新文件夹中。

而已。

以下是您可以在Windows XP注册表中访问的文件夹路径:

在此处输入图像描述

对于Windows 7:

在此处输入图像描述

请参阅MSDN上的ALLUSERS属性。 第一条评论中的链接已被删除。

http://msdn.microsoft.com/en-us/library/aa367559%28v=vs.85%29.aspx