我是Powershell的新手。 我正在使用power shell脚本来构建VB6 dll。
$compiler = "C:\Program Files (x86)\Microsoft Visual Studio\VB98\VB6.EXE".
$vbpPath= "C:\...\Desktop\ProjectFile\ProjectName.vbp"
$Outputpath = "C:\...\Desktop\Destination\ProjectName.dll"
Start-Process -FilePath "`"$compiler `"" -ArgumentList "/out
error.txt /make `"$vbpPath`" `"$Outputpath `"" -PassThru -Wait
我们可以在构建时自行设置产品版本吗? 假设将产品版本设置为“Mysoftware 5.1 Beta 6”。 提前致谢。
答案 0 :(得分:0)
嗨,对任何遇到类似问题的人,
引用此链接后: How do I set the version information for an existing .exe, .dll?
我能够在特定文件夹下更改dll和exes的产品版本。在完成所有dll和exes之后,完成此步骤。
使用Resource Hacker从exes / dll中提取* .RC文件:
$ResourceHackerPath = "C:\Tools\resource_hacker\ResourceHacker.EXE"
$Dllpath = "...\MySoftware\Mydll.dll"
$RCpath = "...\MySoftware\Mydll.RC"
Start-Process -FilePath "`"$ResourceHackerPath`"" -ArgumentList "-extract `"$ProductPath`",`"$RCpath`",versioninfo,," -wait
在* .RC文件中编辑产品版本:
$OriProVer = (Get-Item -literalpath $Dllpath ).VersionInfo.ProductVersion
$NewProVer = "Mysoftware 5.1 Beta 6"
(Get-Content $Dllpath).Replace($OriProVer, $NewProVer ) | Set-Content $Dllpath
使用GoRC将* .RC文件格式更改为* .RES文件:
Start-Process -FilePath "`"$GoRCPath`"" -ArgumentList "/r `"$RCpath`"" -wait
再次使用Resource Hacker将* .RES文件添加到dll或exes
$RESpath = "...\MySoftware\Mydll.RES"
Start-Process -FilePath "`"$ResourceHackerPath`"" -ArgumentList "-addoverwrite `"$Dllpath `",`"$Dllpath `",`"$RESpath`", , ," -wait
您的dll产品版本应更新为您想要的任何字符串。
额外提示,如果您想更新很多dll和exes产品版本: 你可以试试这个:
搜索特定文件夹下的所有dll和exes:
$directory = "...\Desktop\New Folder"
$FileNameList = Get-ChildItem -literalpath $directory -Include *.dll, *.exe -recurse | foreach-object { "{0}" -f [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_).FileName}
在for循环中执行上述所有4个步骤:
for ($i = 0;$i -lt $FileNameList.count;$i++){...}
谢谢&祝你有愉快的一天:)