powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / WIX: как изменить файл при/после установки?
19 сообщений из 19, страница 1 из 1
WIX: как изменить файл при/после установки?
    #37267380
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Инсталлятор ставит wcf сервис под IIS.
После того, как все установлено мне бы надо заменить в установленном Web.config имя хоста.
Сделал свою Custom Action, но она не делает то, что надо.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Code:
[CustomAction]
        static ActionResult ReplaceAddress(Session session)
        {
            ActionResult res = ActionResult.Success;
            session.Log("ReplaceAddress::Begin");
            try
            {
                string siteName = session["WEB_APP_NAME"];
                string fileName = session["INSTALLDIR"] + @"\Web.config";
                string newString = "http://" + Environment.MachineName + "/" + siteName + "/";
                string strOldFile = File.ReadAllText(fileName);
                string strNewFile = strOldFile.Replace(@"http://localhost/Web1/", newString);
                File.WriteAllText(fileName, strNewFile);
            }
            catch (Exception ex)
            {
                res = ActionResult.Failure;
                session.Log("ReplaceAddress::exception: {0}", ex.Message);
            }
            return res;
        }


В логах установки вижу пишет, что эта акция вызвана, но она мало того, что не меняет строки, но еще и
не выдает то, что выводится в session.log...

Хэлп...
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37267423
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

Дебажте кастом экшен. Поставьте там MessageBox.Show("dsf"); в самом начале ну и брейк поинт после него. После того как покажется диалог атачьтесь к msi процессу и жмите Ок на диалоге.
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37267684
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руки-крюкиWinnipuh,

Дебажте кастом экшен. Поставьте там MessageBox.Show("dsf"); в самом начале ну и брейк поинт после него. После того как покажется диалог атачьтесь к msi процессу и жмите Ок на диалоге.

насовал месиджбоксов - вообще не показываются...
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37267815
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

Значит не вызывается экшен. Проект инсталятора студийный? Откуда вызываете экшен?
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37268106
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руки-крюкиWinnipuh,

Значит не вызывается экшен. Проект инсталятора студийный? Откуда вызываете экшен?

пишет в частности такое в логе: (но ни однйо строки из того что в session.Log() внутри

MSI (s) (08:10) [17:12:50:743]: Executing op: ActionStart(Name=ReplaceAddress,,)
Action 17:12:50: ReplaceAddress.
MSI (s) (08:10) [17:12:50:745]: Executing op: CustomActionSchedule(Action=ReplaceAddress,ActionType=1601,Source=BinaryData,Target=ReplaceAddress,)


Проект в студии2010+WixToolset+руками.
Вызов такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 <Binary Id="WebAppCA"  SourceFile="$(var.CAFileLocation)" />
    
    <CustomAction Id="ReplaceAddress"
                  BinaryKey="WebAppCA"
                  DllEntry="ReplaceAddress"
                  Execute= "commit"
                  Return="ignore" />    

  <InstallExecuteSequence>
    <Custom Action='ReplaceAddress' After="InstallFiles">NOT Installed</Custom>
  </InstallExecuteSequence>
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37268117
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

Код: plaintext
1.
2.
3.
4.
    <CustomAction Id="ReplaceAddress"
                  BinaryKey="WebAppCA"
                  DllEntry="ReplaceAddress"
                  Execute= "commit"
                  Return="ignore" /> 

Это годится только для native. Для .net нужна буферная managed c++ библиотека. В викс уже встроена эта библиотека просто нужно по другому указывать ваш DllEntry. Спросите гугл .
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37268132
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоп, кажется я ошибся.
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37268144
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руки-крюкиСтоп, кажется я ошибся.

да, вроде бы ошибка....
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37268170
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такая фигня получается
Вывод session.Log() из первой не вижу, вывод из второй вижу в логе.

Но вопрос остается: как вызвать эту свою функцию один раз после того как файлы уже установлены, чтобы подкорректировать установленный файл Web.config?

Код: plaintext
1.
2.
3.
4.
  <InstallExecuteSequence>
    <Custom Action='ReplaceAddress' After="InstallFiles">NOT Installed</Custom>
    <Custom Action='ConnectDbAction'      After= "InstallInitialize">NOT Installed</Custom>
  </InstallExecuteSequence>
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37268177
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhтакая фигня получается
Вывод session.Log() из первой не вижу, вывод из второй вижу в логе.

Но вопрос остается: как вызвать эту свою функцию один раз после того как файлы уже установлены, чтобы подкорректировать установленный файл Web.config?

Код: plaintext
1.
2.
3.
4.
  <InstallExecuteSequence>
    <Custom Action='ReplaceAddress' After="InstallFiles">NOT Installed</Custom>
    <Custom Action='ConnectDbAction'      After= "InstallInitialize">NOT Installed</Custom>
  </InstallExecuteSequence>


Ну поставьте тогда так:
Код: plaintext
1.
2.
3.
  <InstallExecuteSequence>
    <Custom Action='ReplaceAddress' After="InstallInitialize">NOT Installed</Custom>
  </InstallExecuteSequence>
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37268179
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или InstallFinalize
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37268183
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руки-крюкиИли InstallFinalize

не нахожу описания этого состояния: файлы в этот момент уже установлены в целевой фоолдер?
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37268194
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

commit + InstallInitialize произойдет когда уже все установлено, так что не напрягайтесь =)
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37268254
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руки-крюкиWinnipuh,

commit + InstallInitialize произойдет когда уже все установлено, так что не напрягайтесь =)


Прошло!

Нарвался на такое дальше:
внутри функции беру/меняю проперть

Код: plaintext
session["LOGHACK"] = @"2";

Получаю:
ex = {"Cannot access session details from a non-immediate custom action"}

Это если акция объявлена
Код: plaintext
1.
2.
3.
4.
5.
    <CustomAction Id="ReplaceAddress"
                  BinaryKey="WebAppCA"
                  DllEntry="ReplaceAddress"
                  Execute="commit"
                  Return="ignore" />   

Если же
Код: plaintext
1.
2.
3.
4.
5.
    <CustomAction Id="ReplaceAddress"
                  BinaryKey="WebAppCA"
                  DllEntry="ReplaceAddress"
                  Execute="immediate"
                  Return="ignore" />   

можно взять проперть и изменить значение, но тогда акция выполняется раньше.. мучают меня смутные сомнения что это до копирования файлов...
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37268440
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

Ну так правильно, а какой смысл менять значение проперти если инсталяция закончилась?
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37268863
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руки-крюкиWinnipuh,

Ну так правильно, а какой смысл менять значение проперти если инсталяция закончилась?

это я для ужесточения эксперимента, мне надо только пути взять из пропертей, типа INSTALLDIR...

И странно как-то, функция отрабатывает(судя по логам и по тому, что она делает), а инсталлер вдруг возбуждает дебагер...
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37271158
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странность:

Web.config , который ставит инсталлер

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="MyKey" value="XXX"/>
    <add key="AddedDuringInstall" value="XXXThis text was added during installation."/>
    <add key="MyKey2" value="zzz"/>
  </appSettings>
  <connectionStrings/>
...

команды в инсталлере


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<Component Id="Web.config" Guid="2ED81B77-F153-4003-9006-4770D789D4B6">
<File Id="Web.config" Name="Web.config" Source="$(var.SolutionDir)SimpleWebApp\Web.config" DiskId="1" KeyPath="yes" />

<util:XmlFile Id="AppSettingsAddNode" File="[INSTALLLOCATION]Web.config" Action="createElement"  ElementPath="/configuration/appSettings" Name="add" Sequence="1" />

<util:XmlFile Id="AppSettingsKeyAttribute" Action="setValue" File="[INSTALLLOCATION]Web.config" ElementPath="/configuration/appSettings/add" Name="key" Value="AddedDuringInstall" Sequence="2" />

<util:XmlFile Id="AppSettingsValueAttribute" Action="setValue" File="[INSTALLLOCATION]Web.config" ElementPath="/configuration/appSettings/add" Name="value" Value="This text was added during installation." Sequence="3" />
</Component>

Результат:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="AddedDuringInstall" value="This text was added during installation."/>
    <add key="AddedDuringInstall" value="XXXThis text was added during installation."/>
    <add key="MyKey2" value="zzz"/>
  <add/></appSettings>
  <connectionStrings/>
...

Т.е каким-то чудесныим образом теряются другие ключи...фигня какая-то...
...
Рейтинг: 0 / 0
WIX: как изменить файл при/после установки?
    #37271257
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinnipuhAction="setValue"

А что странного? Взяло первый попавшийся узел и изменило его. Может там есть что-то типа addValue?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
WIX: как изменить файл при/после установки?
    #38688155
Вопрос немого не про изменение файла.
В одном из Custom Action(CA) создал/сохранил таблицу с данными Session.DataBase.
В процессе инсталляции вызывается CA. В данном CA необходимо сохраненные данные вставить в табл бд.
Но моей табл в database.Tables["Mytable"] ее нету?
До процесса инсталляции в других CA эта табл. существует.
В чем может быть проблема?
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / WIX: как изменить файл при/после установки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]