Power shell 脚本 - 我们可以在构建时设置 dll 产品版本吗?
Power shell script - can we set dll Product Version when we build it?
我是 Power 的新手shell。
我正在使用 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"。
提前致谢。
遇到类似问题的任何人,您好,
引用此 link 后:
How do I set the version information for an existing .exe, .dll?
我能够更改特定文件夹下的 dll 和 exe 的产品版本。此步骤在构建所有 dll 和 exe 后完成。
使用Resource Hacker从exes/dlls中提取*.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 和exe 产品版本:
你可以试试这个:
搜索特定文件夹下的所有dll和exe:
$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++){...}
谢谢,祝你有愉快的一天:)
我是 Power 的新手shell。 我正在使用 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"。 提前致谢。
遇到类似问题的任何人,您好,
引用此 link 后: How do I set the version information for an existing .exe, .dll?
我能够更改特定文件夹下的 dll 和 exe 的产品版本。此步骤在构建所有 dll 和 exe 后完成。
使用Resource Hacker从exes/dlls中提取*.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 和exe 产品版本: 你可以试试这个:
搜索特定文件夹下的所有dll和exe:
$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++){...}
谢谢,祝你有愉快的一天:)