WiX: Как я могу установить свойство внешне?

В моем установщике WiX у меня есть свойство для UserID, который записан в ключ реестра:

<Property Id='UserID' Value='123' />

<Directory Id='TARGETDIR' Name='SourceDir'>
    <Component Id='UserIDComponent' Guid='*'>
        <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' 
                       Type='integer' Value='[UserID]' Name='UserID' />
    </Component>

Я хотел бы установить значение того свойства к идентификатору пользователя человека, загружающего мой установщик на лету. Таким образом, когда они переходят к загрузке, я просто создам копию основного MSI, который все получают, установите значение UserID тому из человека, загружающего файл, и это - то, что они загружают. Это будет тот же пакет установки, который все получают, но со свойством пользовательский набор для них.

Я, может казаться, не нахожу ресурсов о том, как установить свойство WiX MSI из внешнего источника, все же. Как я могу сделать это?

9
задан Stein Åsmul 22 August 2018 в 07:32
поделиться

2 ответа

Насколько я помню, вы действительно можете устанавливать свойства «извне» - имя свойства должно быть написано ЗАГЛАВНЫМИ буквами, чтобы его можно было распознать как общедоступное (не спрашивайте меня, почему ....), а затем вы можете установить это так:

msiexec /i C:\Example.msi PROPERTY=VALUE

например в вашем случае

msiexec /i C:\Example.msi USERID=somevalue

См. документы MSDN об использовании параметров командной строки с MSIEXEC

10
ответ дан 4 December 2019 в 20:23
поделиться

Ваши варианты выглядят так: -

(i) параметры командной строки на msiexec согласно другому ответу - хрупкие, на самом деле не вариант, если они загружают и запускают его

(ii) пытаются взломать Файл MSI для вставки идентификатора - хитрость

(iii) запуск MSBUILD для создания нового файла MSI по запросу на сервере после изменения копии файла WIX для включения их идентификатора

(iv) предварительное создание множество файлов MSI со случайными идентификаторами (возможно, GUID) в них, а затем связать эти идентификаторы с идентификаторами пользователей во время загрузки в вашей базе данных. Теперь предоставьте службу поиска для сопоставления случайного идентификатора в файле MSI с реальным идентификатором пользователя, чтобы программа при запуске могла найти идентификатор пользователя (или иметь настраиваемое действие, которое делает это).

(v) создать настраиваемое действие и использовать MsiGetProperty для получения имени файла установщика - просто добавьте идентификатор пользователя к имени файла MSI - хрупкий хак

1
ответ дан 4 December 2019 в 20:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: