Мне требуется действие MSI Custom, которое копирует файл из исходного каталога MSI - PullRequest
5 голосов
/ 15 декабря 2008

Я создаю установщик для проекта ac # windows, используя VS 2008. Я пытаюсь написать пользовательское действие, которое копирует файл настроек из исходного каталога MSI-файла, хранящегося на файловом сервере (например, \ server \ fileshare \ myappinstaller \ mysetting.xml) в целевой каталог на компьютере, на котором установлено мое приложение (например, C: \ Program Files \ My App).

Файл настроек не может быть добавлен в установщик, так как он будет содержать настройки, которые будут уникальными для клиента, устанавливающего приложение.

Есть ли у кого-нибудь код (предпочтительно C # или VB.NET) для такого настраиваемого действия? С другой стороны, кто-нибудь знает, как получить местоположение источника MSI (например, \ server \ fileshare \ myappinstaller) в рамках настраиваемого действия.

Большое спасибо

Ответы [ 4 ]

5 голосов
/ 19 января 2010

Я решил это, добавив

/ 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! Stefan

2 голосов
/ 15 декабря 2008

Я бы порекомендовал вам добавить файл XML в программу установки в качестве одного из устанавливаемых компонентов. Это было бы самым простым способом и не требовало бы специальных действий.

WiX может быть вариантом для вас. Позволяет настраивать файлы конфигурации XML во время установки с использованием XmlConfig.

1 голос
/ 16 декабря 2008

Я делаю аналогичную вещь, но поставляю конфигурацию по умолчанию в файле MSI, а затем использую MST для добавления файла пользовательской конфигурации. Это намного надежнее, поскольку все «встроено» в установщик Windows, и мне просто нужно отправить небольшой пользовательский MST каждому клиенту.

Более подробную информацию о том, как я это делаю, можно найти на Самое простое решение для замены крошечного файла внутри MSI?

0 голосов
/ 15 декабря 2008

Обычно пользовательские действия в WindowsInstaller используют что-то из таблиц MSI для помещения чего-либо в любую таблицу MSI.

Кроме того, команда WindowsInstaller-Team отклоняет любые управляемые расширения для установщиков, причины этого можно найти повсюду в сети.

Но я некоторое время назад определил расширение для создания управляемых настраиваемых действий для WindowsInstallers, которое можно использовать с WiX , которое работает до сих пор, но сверху есть более новое решение этой работы, реальное расширение для WiX, позволяющее управлять настраиваемыми действиями.

...