【问题标题】:How can I set the ‘SecureCustomProperties’ property in the ‘Property Table’ of an MSI using Visual Studio?如何使用 Visual Studio 在 MSI 的“属性表”中设置“SecureCustomProperties”属性?
【发布时间】:2012-02-29 10:21:11
【问题描述】:

如果 'AlwaysInstallElevated' 为 1,则存在一个已知错误,它会使 Windows Vista 和 7 中的“基于 Visual Studio 构建的 MSI 安装到 C: 而不是 C:\Program Files”。

解决方法和问题在in an MSDN blog 中进行了解释。修复方法是“将 TARGETDIR 添加到‘属性表’中的‘SecureCustomProperties’属性”。一切都很好 - 但我该怎么做呢?我知道这不是一个编程问题,但到目前为止,我花了很多徒劳的时间搜索网络。

【问题讨论】:

    标签: visual-studio windows-installer setup-deployment


    【解决方案1】:

    Visual Studio 部署项目中存在大量错误。微软将其从下一版本的 Visual Studio 中删除,并提供对 InstallShield Limited Edition 的免费访问。

    会发现“修复”由 VDPROJ 构建的 Msi 的人通常会编写作为构建后命令运行的实用程序,这些命令在 MSI 上执行 SQL 更新以处理表数据。

    伪代码如下...

    select Value from Property where Property.Property = "SecureCustomProperties"
    
    strings.split ";" into collection
    
    if collection not contains "TARGETDIR" add "TARGETDIR" to collection
    
    collection serialize using ; to string
    
    update Property set Value = newstring where Property.Property = "SecureCustomProperties"
    

    【讨论】:

    • 所以总结一下你的答案:在VS中不起作用,必须手动完成,对吧?
    • 不是手动的,(它可以编写为构建后事件的脚本)但它肯定必须在工具之外完成。
    • 如果您开始超越 ISLE 谷歌“Augmenting InstallShield”并阅读我的一些博客文章,了解如何扩展它的功能。
    • 我建议改用 WiX。高级工具包永远不会让您无法完全按照自己的意愿更改 MSI 表。
    • 我发现了一些极端情况,WiX 也可以这样说。 XML/XSD 也是底层关系数据库的高级抽象,存在一些差距。
    【解决方案2】:

    你需要使用ORCA,然后修改属性表如下:

    【讨论】:

    • @0X0nosugar 问题同时得到修复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    相关资源
    最近更新 更多