Я новичок в WIX, и мне было поручено создать установщик, который делает
следующее:
* Развертывает сборку нашего приложения без перезаписи файла App.Config.
для заявки
* Загружает ключ / значения в файле App.Config и запрашивает у пользователя
«по умолчанию» (существующие значения) и позволяет им изменять их до окончания
* СОХРАНЯЕТ значения, предоставленные пользователем (или значения по умолчанию, если пользователь не сделал
изменения) обратно в файл App.Config для использования с приложением.
У меня есть диналоги WIX и пользовательские действия, успешно выложенные где
после InstallFinalize выполняется моя пользовательская операция «LoadDefaultOptions»,
который успешно принимает каталог установки и файл конфигурации приложения
name, загружает его в программу чтения XML и анализирует пары ключ / значение, устанавливая
их в переменную сеанса следующим образом:
session[key.toUpper()] = value;
Мои пользовательские действия определены как:
<CustomAction Id="LoadDefaultOptions" Return="asyncWait" Execute="immediate" BinaryKey="aeserverDbDialogPackage.dll" DllEntry="LoadDefaultOptions"/>
<CustomAction Id="SetConfigOptions" Return="check" Execute="immediate" BinaryKey="aeserverDbDialogPackage.dll" DllEntry="SetConfigOptions"/>
LoadDefaultOptions выполняется так:
<Custom Action="LoadDefaultOptions" After="InstallFinalize" />
У меня есть свойства редактирования диалогового окна, настроенные так:
<Control Id="CCPDbConnString" Type="Edit" X="20" Y="62" Width="150" Height="18" Property="CCPCONNECTIONSTRING" Indirect="no" />
Ранее в файле WXS был соответствующий тег свойства:
<Property Id="CCPCONNECTIONSTRING" Secure="yes" ></Property>
... А пользовательское действие LoadDefaultOptions перезаписывает сеанс var как
это:
session["CCPCONNECTIONSTRING"] = <value parsed from file>;
Согласно журналам сеансов, это работает, как и ожидалось, синтаксический анализ xml работает, и
установлены сеансовые переменные.
Моя проблема в том, что мой пользовательский диалог появляется, чтобы предложить пользователю
эти сохраненные значения по умолчанию ПОСЛЕ запуска CustomAction LoadDefaultOptions.
Кажется, что значения свойств ORIGINAL переменных сеанса застряли
вместо того, чтобы перезаписываться пользовательским действием, которое загружало значения по умолчанию
через файл xml и сохранил их в сеансе. (они пустые как их
оригинальные свойства определены, или в случае, если я определяю их иначе,
они показывают эти значения вместо записанных значений сеанса)
Как заставить диалоги "читать" переопределенные переменные сеанса
CustomActions
В конечном итоге я хочу загрузить эти значения из конфигурации приложения и запросить их обратно.
пользователю в необязательном диалоговом окне с выходным экраном (который работает так
далеко, кроме получения обновленных сессий vars), а затем по команде
это диалоговое окно, запустите другое пользовательское действие, чтобы переписать App.Config
файл с настройками из пользовательского диалога ...
Я просто не могу передать сессионные переменные в PERSIST !!!
Есть идеи? я совершенно безосновательно пытаюсь использовать сеанс таким образом? как еще я могу проанализировать файл app.config и позволить пользователю установки изменить настройки приложения, если это не сеанс?