WiX: значение свойства потеряно между InstallUISequence и InstallExecuteSequence

sizeof является чистым временем компиляции в C++ и C до C99. При запуске с C99 существуют массивы переменной длины:

// returns n + 3
int f(int n) {
    char v[n + 3];

    // not purely a compile time construct anymore
    return sizeof v;
}

, Который оценит sizeof операнд, потому что n еще не известен во время компиляции. То, что только относятся к массивам переменной длины: Другие операнды или типы все еще заставляют sizeof вычислить во время компиляции. В частности, массивы с размерами, известными во время компиляции, все еще обрабатываются как в C++ и C89. Как следствие значение, возвращенное sizeof, не является временем компиляции, постоянным (константное выражение) больше. Вы не можете использовать его, где такое значение требуется - например, при инициализации статических переменных, если компилятор, который определенное расширение позволяет ему (Стандарт C позволяет реализации иметь расширения того, что это рассматривает как постоянное).

6
задан Stein Åsmul 29 July 2014 в 06:16
поделиться

1 ответ

Вам необходимо отметить свойство «Защищено», чтобы оно перешло со стороны клиента (InstallUISequence) на сторону сервера (InstallExecuteSequence). Для этого вам необходимо сделать Свойство "общедоступным" (ВСЕ ЗАГЛАВНЫМИ буквами) и безопасным. Примерно так:

Вам не нужно указывать значение, если вы не хотите, чтобы что-то отображалось в вашем пользовательском интерфейсе по умолчанию.

15
ответ дан 8 December 2019 в 16:06
поделиться
Другие вопросы по тегам:

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