Как получить доступ к имени файла устанавливаемого пакета установки?
Я успешно создал установочный пакет MSI, используя WiX. Теперь мне нужно получить доступ к имени файла (имя, которое отображается в обозревателе, например "myPackage.msi") пакета установщика msi в коде (обратите внимание, пользователь может изменить имя установочного пакета на любое, что он / она хочет). Есть ли способ определить имя файла пакета? Использование пользовательских действий также допускается.
К вашему сведению, мне нужно имя файла для создания файла конфигурации на основе имени файла пакета, имя будет уникальным для другого пользователя.
2 ответа
Относительно параметров командной строки: посмотрите эту тему. WIX: Как выбрать компоненты из командной строки
В нем показано, как группировать компоненты / компоненты, а затем, как их можно выбрать с помощью параметров командной строки.
PS: Не могли бы вы привести более конкретный пример, чтобы мы могли понять, почему необходимо манипулировать некоторыми файлами? Каковы эти пользовательские настройки, которые влияют на установщик?
Изменить: Предыдущий ответ (после того, как вы предоставили больше информации, стало ясно, что это бесполезно).
Создайте переменную (в отдельном файле Variables.wxi):
<?xml version="1.0" encoding="utf-8"?>
<Include>
<?define ProductName = "..." ?>
<?define CompanyName = "..." ?>
</Include>
Затем вы можете использовать эту переменную везде, например:
<Product Id="*" Name="$(var.ProductName)" Language="1033" Version="..." Manufacturer="$(var.CompanyName)" UpgradeCode="....">
Вы могли бы прочитать OriginalDatabase
собственность, по крайней мере, для первой установки. Однако во время обслуживания он становится немного сложнее, поскольку кэшированный пакет.msi не сохраняет первоначальное имя, и вам придется его хранить или использовать что-то вроде MsiGetProductInfo(..., INSTALLPROPERTY_PACKAGENAME, ...)
(только документировано для работы на рекламируемые пакеты, а не на установленные). Таким образом, несмотря на не полное понимание того, что вы пытаетесь сделать здесь, я не рекомендую подход, который вы описали.
Таким образом, я бы предложил для каждого пользователя местоположение файла с известным именем, например %LOCALAPPDATA%\YourCompany\YourProduct\someconfig.file
, Это облегчает обновление или использование файла вне контекста установки.