【问题标题】:I require a MSI Custom action that copies a file from the MSI source directory我需要从 MSI 源目录复制文件的 MSI 自定义操作
【发布时间】:2008-12-15 12:00:00
【问题描述】:

我正在使用 VS 2008 为 c# windows 项目创建安装程序。我正在尝试编写一个自定义操作,该操作从存储在文件服务器上的 MSI 文件的源目录复制设置文件(例如 \server\ fileshare\myappinstaller\mysetting.xml)复制到安装了我的应用程序的计算机上的目标目录(例如 C:\Program Files\My App)。

无法将设置文件添加到安装程序中,因为它包含的设置对于安装应用程序的客户来说是唯一的。

有没有人有这种自定义操作的代码(最好是 C# 或 VB.NET)?或者,是否有人知道如何在自定义操作中获取 MSI 源位置(例如 \server\fileshare\myappinstaller)。

非常感谢

【问题讨论】:

    标签: c# installation windows-installer custom-action


    【解决方案1】:

    我已经通过添加解决了这个问题

    /InstallerPath="[OriginalDatabase]"

    到自定义操作的 CustomActionData(在设置项目的选项卡自定义操作中)并在自定义操作中使用此代码读取值:

        Public Overrides Sub Commit(ByVal savedState As System.Collections.IDictionary)
            MyBase.Commit(savedState)
    
            Dim directoryOfMSI As String = IO.Path.GetDirectoryName(Context.Parameters("InstallerPath"))
    
            'Do your work here
            '...
    
        End Sub
    

    Ciao! 斯蒂芬

    【讨论】:

      【解决方案2】:

      我建议您将 XML 文件作为要安装的组件之一添加到安装程序中。这将是最简单的方法,并且不需要自定义操作。

      WiX 可能是您的一个选择。它允许您在安装期间使用 XmlConfig 自定义 XML 配置文件。

      【讨论】:

        【解决方案3】:

        我做了类似的事情,但在 MSI 文件中提供默认配置,然后使用 MST 添加自定义配置文件。它更可靠,因为一切都是 Windows 安装程序的“本地”,我只需要向每个客户发送一个小的自定义 MST。

        有关我如何做到这一点的更多信息,请访问Simplest solution to replace a tiny file inside an MSI?

        【讨论】:

          【解决方案4】:

          WindowsInstaller 中的自定义操作通常使用 msi 表中的某些内容将某些内容放入 msi 的任何表中。

          此外,WindowsInstaller-Team 拒绝安装程序的任何托管扩展,其原因在网络上随处可见。

          但是,我前段时间确实为 WindowsInstallers 找到了 create managed custom actions 的扩展,可与 WiX 一起使用,它仍然有效,但在这项工作之上还有一个更新的解决方案,一个真正的 WiX 扩展以允许托管自定义操作。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多