创建 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。
我使用 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。