我正在使用高级安装程序构建安装程序,并且在尝试将日期添加到日志文件时遇到了问题。我尝试使用cmd的命令,但是当我将它添加到MSI命令行时,所有日期值都显示为空白。以下是我为MSI传递的参数
/L*V "C:\Log_%date:~4,2%.%date:~7,2%.%date:~10,4%-%time:~0,2%.%time:~3,2%.%time:~6,2%.log"
我们正在尝试将日志设置为Log_04.05.2019-15.03.45.log而不是Log.log,因为在卸载或重新安装时会覆盖日志。
高级安装人员:对不起,我看到我一定有误会。您正在尝试从Advanced Installer中设置日志文件名。快看看吧。您在哪里在工具中指定此命令行?请注意setting the logging policy for "Global Logging" will ensure unique log file names以及每个MSI操作都记录在TMP中。
澄清:所以看起来你不想写日志,而是控制日志文件本身的文件名?
PowerShell:我发现批处理文件对这样的东西很笨重。你能通过Powershell调用安装吗?我没有真正使用PowerShell,但看到它可以使用.NET,也许这个C#调用的简单转换就可以了?
你想要这样的东西:"Log_04.05.2019-15.03.45.log"
,所以你也许可以在C#中试试这个:
Console.WriteLine("Log_" + DateTime.Now.ToString("dd.MM.yyyy-HH.mm.ss") + ".log");
Here is a blog on using PowerShell with Windows Installer,请看这个PowerShell片段的底部(同样,我没有为此目的使用PowerShell):
$DataStamp = get-date -Format yyyyMMddTHHmmss
$logFile = '{0}-{1}.log' -f $file.fullname,$DataStamp
$MSIArguments = @(
"/i"
('"{0}"' -f $file.fullname)
"/qn"
"/norestart"
"/L*v"
$logFile
)
Start-Process "msiexec.exe" -ArgumentList $MSIArguments -Wait -NoNewWindow
也许还有关于Windows Installer PowerShell Module(希思斯图尔特)的读物与这个通用答案有关:How can I use powershell to run through an installer?。专用PowerShell模块使Windows Installer操作不那么笨重。
一些链接: