创建 MSI 并强制所有用户使用 Visual Studio

Create MSI and Enforce All Users with Visual Studio

我使用 Visual Studio 2015 创建了一个安装程序(使用 Visual Studio 安装程序插件)。目标是始终 运行 具有相同本地资源的 APP,无论谁登录,因此我们的目标是 [CommonAppDataFolder](C:\ProgramData... 在 Win10 上)。安装程序可以很好地将所有共享资源放在我们想要的地方。但是生成的 MSI 提供了安装为 "everyone" 或 "just me"

的选项

我们想将安装选项设为灰色 "just me"。 作为 MSI 构建过程的一部分,有没有办法在 Visual Studio 中执行此操作。

我看到一些解决方案涉及 运行ning MSIEXEC 和不同的参数,例如 ALLUSERS,但我想知道是否有一种方法可以将其设置为在 Visual Studio 中自动发生。

谢谢。

I don't use that particular tool. There might be a better way to achieve what you want than the below "hack". Adding since you got no other answers (yet).

UPDATE: Go with Phil's answer. I don't have the tool to check but it looks good. Leaving in this answer just for the record. Not recommended unless you have other things you want to change.

Post-处理 MSI

隐藏控制:不理想,但如果你不介意post-处理MSI(可以使用 MSI API 编码实现自动化),您可以在 ControlCondition table 中插入一行以隐藏有问题的整个对话框控件。

临时示例:隐藏设置 LicenseAgreementDlg 中的“后退”按钮 - 只需添加此行 (我想其他地方定义的事件可以再次显示):

.


运行时的对话框:下面是运行时的实际对话框。


微星API

使上述自动化。获取 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


链接:

项目属性 window(非属性)可以通过在解决方案资源管理器中选择项目,然后按 F4 来显示。您可以在那里将 InstallAllUsers 设置为 True。

InstallFolder 对话框的属性 window 有一个设置 InstallAllUsersVisible,因此只需将其设置为 False。