我已经使用Visual Studio 2015(带有Visual Studio安装程序插件)创建了一个安装程序。我们的目标是始终使用相同的本地资源运行该APP,无论谁登录,因此我们的目标是[CommonAppDataFolder](在Win10上为C:\ ProgramData ...)。安装程序可以很好地将所有共享资源放在我们需要的地方。但是生成的MSI提供了安装为“所有人”或仅“只是我”的选项
我们要将该选项显示为“仅我”,以灰色显示。 作为MSI生成过程的一部分,是否可以从Visual Studio中执行此操作。
我看到一些解决方案,其中涉及使用不同的参数(例如 ALLUSERS )运行 MSIEXEC ,但是我想知道是否有一种方法可以将其设置为在Visual Studio中自动发生工作室。
谢谢。
答案 0 :(得分:3)
可以通过在解决方案资源管理器中选择项目,然后选择F4来显示项目属性窗口(非属性)。您可以在那里将InstallAllUsers设置为True。
InstallFolder对话框的“属性”窗口有一个InstallAllUsersVisible,因此只需将其设置为False。
答案 1 :(得分:1)
我不使用该特定工具。可能有更好的方法 比下面的“ hack”实现您想要的东西。添加,因为您还没有其他答案。
更新:跟随菲尔的答案。我没有检查工具,但看起来不错。留下这个答案只是为了记录。除非您有其他要更改的地方,否则不建议使用。
隐藏控件 :不太理想,但是如果您不介意对MSI进行后处理(可以通过MSI API编码自动执行),则可以在其中插入一行ControlCondition table以隐藏整个有问题的对话框控件。
临时示例 :在设置的LicenseAgreementDlg
中隐藏“返回”按钮-只需添加此行即可(我想其他地方定义的事件可能会显示该行再次):
运行时对话框 :以下是运行时的实际对话框。
使以上操作自动化。掌握WiRunSQL.vbs
-Windows SDK的一部分-如果已安装Visual Studio,则仅搜索您的SDK文件夹。还有plenty of copies on github。
在批处理文件中:
cscript.exe "%~dp0"\WiRunSQL.vbs "MySetup.msi" "INSERT INTO `ControlCondition` (`Dialog_`, `Control_`, `Action`, `Condition`) VALUES ('LicenseAgreementDlg', 'Back', 'Hide', '1')"
pause
老实说,我也可以在Property table中对ALLUSERS=1
进行硬编码。