我正在使用高级安装程序来构建安装程序,并且在尝试将日期添加到日志文件时遇到了问题。我尝试使用有效的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 ,因为在卸载或在卸载过程中日志会被覆盖重试安装。
答案 0 :(得分:1)
高级安装程序 :对不起,我发现我一定被误解了。您正在尝试从“高级”中设置日志文件名 安装程序。快看。您在工具中的哪里指定此命令行?请注意,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?。 进行Windows Installer操作的专用PowerShell模块 不太笨。
某些链接 :