【问题标题】:Create MSI and Enforce All Users with Visual Studio使用 Visual Studio 创建 MSI 并强制所有用户
【发布时间】:2018-12-08 02:07:42
【问题描述】:

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

我们希望将安装为“just me”的选项灰显。 作为 MSI 构建过程的一部分,有没有办法在 Visual Studio 中执行此操作。

我看到一些解决方案涉及使用不同的参数运行 MSIEXEC,例如 ALLUSERS,但我想知道是否有办法将其设置为在 Visual 中自动发生工作室。

谢谢。

【问题讨论】:

    标签: visual-studio installation windows-installer visual-studio-setup-proje


    【解决方案1】:

    我不使用那个特定的工具。可能有更好的方法 比下面的“hack”实现你想要的。添加,因为您没有其他答案(还)。

    更新:按照菲尔的回答。我没有检查工具,但它看起来不错。留下这个答案只是为了记录。除非您有其他想要更改的内容,否则不推荐。

    后处理 MSI

    隐藏控制:不理想,但如果您不介意对 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


    链接:

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-04
        • 1970-01-01
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多