5

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

无法将设置文件添加到安装程序中,因为它将包含安装应用程序的客户所独有的设置。

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

非常感谢

4

4 回答 4

5

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

/InstallerPath="[原始数据库]"

到自定义操作的 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

再见!斯特凡

于 2010-01-19T15:40:50.963 回答
2

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

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

于 2008-12-15T12:41:47.733 回答
1

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

有关我如何执行此操作的更多信息,请参阅最简单的解决方案来替换 MSI 中的小文件?

于 2008-12-16T02:05:45.003 回答
0

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

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

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

于 2008-12-15T12:49:51.880 回答