|
本帖最后由 9zhmke 于 2014-2-19 16:27 编辑
对批处理稍改动一下:
1、在目录判断里加上引号以避免到根目录去建子目录
2、解压出Wins文,在批处理中判断目标文件夹没有对应内容才复制过去
for /f %%i in ('dir /b Wins\x*') do if not exist "%windir%\winsxs\%%i\." md "%windir%\winsxs\%%i"&& copy "Wins\%%i" "%windir%\winsxs\%%i"
for /f %%i in ('dir Wins\Manifests/b') do if not exist "%windir%\winsxs\Manifests\%%i" copy "Wins\Manifests\%%i" "%windir%\winsxs\Manifests\"
3、在注册表中加入32/64段(反正十几行对注册表来说算不上什么事)
4、对64位和X86进行判断:
set tmp1=%ProgramFiles%\Common Files\microsoft shared\OFFICE12
if exist "%ProgramFiles(x86)%\Common Files\nul" set tmp1=%ProgramFiles(x86)%\Common Files\microsoft shared\OFFICE12
md "%tmp1%" >nul 2>nul
copy "%CD%\MSO.DLL" "%tmp1%" /y
4、由于少了一个项,所以Excel总提示stdole32.tlb出错,应该加上:
reg add "HKLM\SOFTWARE\Classes\Excel.Chart.8\protocol\StdFileEditing\server" /f
这样处理过后,Excel打开时虽然还是要提示stdole32.tlb出错,但再次打开时已经没有错误了。
5、由于少了另一个值,所以Excel总提示stdole32.tlb出错,应该加上:
reg add "HKCU\Software\Microsoft\Office\Excel\Addins\TCSCConv.ExcelAddinDesigner12" /f /v "LoadBehavior" /t REG_DWORD /d 2
又由于这一段会被后面的regsvr32时更改,所以应该放到最后面。
至此,比较完美了。 |
|