Я бью головой об стену на этом, вот что я узнал:
Вы должны установить свои параметры в командной строке, а также в свойстве «CustomActionData» для каждого из ваших настраиваемых действий (все, что у вас есть в Install, Commit и т. Д.)
Ваша командная строка будет выглядеть примерно так:
msiexec /i myInstaller.msi MYFIRSTPARAM=VALUE1 MYSECONDPARAM=VALUE2
Тогда ваши CustomActionData должны выглядеть следующим образом:
/myfirstparam=[MYFIRSTPARAM] /mysecondparam=[MYSECONDPARAM]
Теперь вот несколько особых случаев:
Похоже, @Klaus прав, вам нужно использовать ALLCAPS в именах ваших параметров.
если ваши значения содержат пробелы, вам понадобятся кавычки вокруг них как в командной строке, так и в ваших свойствах CustomActionData, например:
msiexec /i myInstaller.msi MYFIRSTPARAM="VALUE1" MYSECONDPARAM="VALUE2"
/myfirstparam="[MYFIRSTPARAM]" /mysecondparam="[MYSECONDPARAM]"
если ваши значения заканчиваются косой чертой, как и большинство путей к файлам, у вас возникнет странная проблема: когда msiexec создаст ваши customactiondata, он создаст эту строку:
/myfirstparam="C:\myfile\" /mysecondparam="C:\myfile\"
не имеет значения, используете ли вы кавычки в командной строке или нет, если этот слеш является последним символом вашего значения, он будет эффективно читаться как escape-символ и будет экранировать кавычку в вашем свойстве customactiondata. Это вызывает хаос. Решение состоит в том, чтобы либо: 1) добавить пробел между вашим параметром и последней кавычкой, а затем не забывать обрезать его где-нибудь в вашем коде, либо 2) добавить и дополнительный слеш между вашим параметром и кавычкой, чтобы избежать экранирования персонаж. Смотрите оба метода ниже:
/myfirstparam="[MYFIRSTPARAM] " /mysecondparam="[MYSECONDPARAM]\"
Надеюсь, это поможет.