Странное поведение с установочной транзакцией и ExternalUI, которые уничтожают мои файлы журнала.
Я объединяю три MSI в этой транзакции.Я делаю подробный файл журнала для каждой установки.В конце концов мой «последний» подробный журнал будет удален.Это всегда «последний», который.
Что я делаю не так?Как избежать этого поведения?
Это происходит после того, как я фиксирую транзакцию
transaction.Commit();
Именно здесь:
private void End(bool commit)
{
uint ret = NativeMethods.MsiEndTransaction(commit ? 1 : 0);
}
Мой последний файл журнала будет удален и заменен этимвыстрелил один:
=== Verbose logging started: 15.02.2011 10:58:16 Build type: SHIP UNICODE 5.00.7600.00 Calling process: \\olli\Public\Hin und her\Kai-Uwe\InstallWizard.exe ===
MSI (s) (08:30) [10:58:16:631]: User policy value 'DisableRollback' is 0
MSI (s) (08:30) [10:58:16:631]: Machine policy value 'DisableRollback' is 0
MSI (s) (08:30) [10:58:16:631]: Incrementing counter to disable shutdown. Counter after increment: 0
MSI (s) (08:30) [10:58:16:631]: MSCOREE not loaded loading copy from system32
MSI (s) (08:30) [10:58:16:959]: Note: 1: 2318 2:
MSI (s) (08:30) [10:58:16:975]: Note: 1: 2318 2:
MSI (s) (08:30) [10:58:16:975]: Note: 1: 2318 2:
MSI (s) (08:30) [10:58:16:975]: Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied. Counter after decrement: -1
MSI (s) (08:30) [10:58:16:990]: Restoring environment variables
MSI (s) (08:30) [10:58:16:990]: Calling SRSetRestorePoint API. dwRestorePtType: 0, dwEventType: 103, llSequenceNumber: 12, szDescription: "".
MSI (c) (E0:0C) [10:58:16:990]: Cloaking enabled.
MSI (s) (08:30) [10:58:16:990]: The call to SRSetRestorePoint API succeeded. Returned status: 0.
MSI (c) (E0:0C) [10:58:16:990]: Attempting to enable all disabled privileges before calling Install on Server
Из моего класса:
using (Transaction transaction = new Transaction("Install", TransactionAttributes.None))
foreach (MsiPackage package in _availableMsiPackages.Values){
Installer.EnableLog(InstallLogModes.Verbose, LogPath);
Installer.SetInternalUI(InstallUIOptions.Silent);
ExternalUIRecordHandler _processMessageHandler = new ExternalUIRecordHandler ProcessMessage);
ExternalUIRecordHandler result = Installer.SetExternalUI(_processMessageHandler, InstallLogModes.Verbose);
Installer.InstallProduct(fi.FullName, _commandLine);
}
transaction.Commit();