NoName Team 電腦資訊討論區

 找回密碼
 我要註冊
搜索
查看: 22023|回復: 28

[工具][輔助] Sources Setup Subst 2021.7.2

[複製鏈接]
發表於 2016-5-7 19:31:16 | 顯示全部樓層 |閱讀模式
本帖最後由 阿達金田一 於 2021-7-3 02:03 編輯

這東西其實我自己都沒在用...都是研究寫好玩的
這應該是最後更新了...
因為有新的想法...所以如果再更新...可能會另外重新寫
(不過剛才這個完結...有點懶的馬上玩新想法)

Sources Setup Subst  版本 2021.7.2
SSSubst_2021_07_02.zip (4.27 KB, 下載次數: 293)

評分

參與人數 2金錢 +10 收起 理由
呆呆烈 + 5 贊一個!
2567288 + 5 贊一個!

查看全部評分

發表於 2016-5-8 04:02:55 | 顯示全部樓層
本帖最後由 2567288 於 2016-5-8 04:08 編輯

我覺得關鍵還是 setup.exe  , 如果不用 setup.exe /installfrom , setup.exe 還是只找 sources 目錄下的 setup.exe install.wim

試了檔案 :
(1) 有 dism 權限的問題 , win8 的作業系統
01.png

(2) 在 win7 處理 boot.wim 後 , 用原來測試的隨身碟試一下 , 還是找不到 setupwin\win10 目錄下的 setup.exe install.wim
02.png

03.png

04.png

05.png

06.png

如果把 win10 的 setup.exe 放到原來的 sources 目錄下 win7 win8.1 win10 的 install.wim 都可以安裝
win7
07.png

08.png

win10 的 setup.exe + win7 的 install.wim
09.png

win8.1
10.png

11.png

win10 的 setup.exe + win8.1 的 install.esd
12.png

win10
13.png

14.png

win10 的 setup.exe + win10 的 install.esd
15.png



 樓主| 發表於 2016-5-8 04:59:39 | 顯示全部樓層
本帖最後由 阿達金田一 於 2016-5-8 10:58 編輯

老大...你有點誤會了
的確 setup.exe 是重點之一...
但這只是 PE 的 setup.exe 用來比對匹配... sources 中的安裝檔是否是同版本
說是重點...但也是很簡易的判斷而以

install.wim 只會判斷是否存在...因為install.wim 是可以客製的 (像 oem 也會自行客製)

也就是說  PE setup.exe 判斷 的方式...就只是找 \sources 中 , 有同樣的 setup.exe 並且有 install.wim 的...為安裝來源

所以...老實說...都不帶 setup.exe 一樣可以完成安裝...只要用 PE 中的 setup.exe 去取代...(所以一定一樣)
這可以直接 copy PE setup.exe 到 安裝來源 \sources 中...也可以用 mklink 來做到
不過 mklink 不可以做用在 X: 所以...要另外...建立一個 vhd 用來做 mklink
例如
x:\sources\setup.exe
D:\Win10\install.wim
V: 是 VHD
V:\Win10\sources\setup.exe ( mklink x:\sources\setup.exe )
V:\Win10\sources\install.wim ( mklink d:\win10\install.wim )
Subst S: V:\Win10
S:\Sources\setup.exe
S:\Sources\install.wim

這於由於
S:\Sources\setup.exe 一定是 PE 的 setup.exe 所以一定可以安裝...不管 install.wim 是那一版...也不用管 PE 是那一版

但這有點無意義...因為主要就是要...各版PE 對應 各版 Wim 安裝來源(Sources)
否則...何必修改每個 PE ... 都統一用 Win10 PE 來安裝...不好就了
用 Win10 PE 再做個選單...來選擇 install.wim ... 在用 setup.exe /installfrom 不就好了

而如果用 setup.exe /installfrom 來做 對應 各版本...就都要每個 PE 都要針對 路徑位置 做修改...因為要對應不同的 isntall.wim

所以 subst 的效果...就是要映射出...多個安裝來源 ?:\sources
所以老大...你失敗是因為...你沒放到 sources 啊

例如
D:\SetupWin\Win7\Sources\setup.exe
D:\SetupWin\Win7\Sources\install.wim
D:\SetupWin\Win8\Sources\setup.exe
D:\SetupWin\Win8\Sources\install.wim
E:\SetupWin\Win81\Sources\setup.exe
E:\SetupWin\Win81\Sources\install.wim
E:\SetupWin\Win10\Sources\setup.exe
E:\SetupWin\Win10\Sources\install.wim

是像上面那樣 把 setup.exe install.wim 放 sources 不是直接放到 目錄 下...
(可能我主題沒說明的很清楚...等下補充一下...不過大大的功力...竟然沒注意到...)

SetupWin.cmd 會把
D:\SetupWin\Win7\
D:\SetupWin\Win8\
E:\SetupWin\Win81\
E:\SetupWin\Win10\
做 Subst 所以會有 4 個 映射的 ?:\Sources

簡單的說...建立好你要存放 安裝來源 的 映射 目錄 把 sources 拿進去就可以 (雖然其實只要 setup.exe install.wim 頂多加個 ei.cfg)


總結就是
我覺的 setup.exe /installfrom 本身的特性...就是自由選擇來源 wim ...
所以...不適合固定路徑位置的 Wim ...  所以如果要一個 cmd 就通用...那 cmd 要加入...選擇 wim 的部份
例如...
自動尋找 \SetupWin 中... 所有的 Wim ... 然後有使用者...自行選擇要 installfrom 那一樣
不過這樣就不可能 各版 PE 自動去 對應 各版 install.wim
要使用者手動選擇 wim 來對應...( 其實不對應也沒差...因為大致上的安裝沒差很多 )
註:
其實也不是不能自動對應...但要 cmd 另外寫個 setup.exe 比對的程序
不過 Windows 好像沒 2進位 比對 程式 或 指令...可能要自己寫一個 Console 程式 ...給 .cmd 用
用 subst 就簡單多了...反正 setup.exe 會自己比對

而老大你 setup.cmd 方法是...每一個 PE 的 setup.cmd 都不同
都要指定固定路徑...這其實還是使用者手動選擇...只是...是直接改在 PE 中

而 subst 就只是把 ?:\sources 的結構還原出來
所以不太懂的...大可以把各版的 安裝來源 Sources 直接整個 目錄 Copy 到 \SetupWin\xxxx\
所以最終的結構都是 \xxxx\Sources

要注意的是
SetupWin.ini 中是直接指定 \xxxx
SetupWin.cmd 是把 \SetupWin 下的 xxxx  做 subst
也就是 subst \SetupWin\xxxx
所以結構是 \SetupWin\xxxx\Sources
而 SetupWin.ini 內容中...要指定是用 \SetupWin\xxxx 而不是 \SetupWin
SetupWin.ini 是直接 subst 其中指定的路徑

至於 win8 中執行...權限 應該用 系統管理員 去執行就可以了吧...(你那個也是要 系統管理員 去執行)
我自己的 Win7 系統是都有調成 關UAC 而且 cmd 都會自動用 系統管理員
 樓主| 發表於 2016-5-8 10:55:12 | 顯示全部樓層
主題更新
版本更新...
說明更詳細一些...
發表於 2016-5-8 19:20:33 | 顯示全部樓層
本帖最後由 2567288 於 2016-5-8 19:51 編輯
阿達金田一 發表於 2016-5-8 10:55
主題更新
版本更新...
說明更詳細一些...

的確是誤解金大的原意 , win10 目錄下加個 sources 目錄就可以了
01.png

02.png

03.png

原始的 SetupWin.cmd , 系統管理員執行
01.png

02.png

直接拖曳 boot.wim 到 SetupWin.cmd
03.png

新版的 SetupWin.cmd ,  系統管理員執行(這樣比較正常)
04.png




 樓主| 發表於 2016-5-8 23:24:23 | 顯示全部樓層
本帖最後由 阿達金田一 於 2016-5-8 23:56 編輯
2567288 發表於 2016-5-8 19:20
的確是誤解金大的原意 , win10 目錄下加個 sources 目錄就可以了

因為舊版的沒考慮 系統管理員 的問題
因為我自己Win7 都是 設 系統管理員 + 關 UAC ...
原本就是用 系統管理員 身份

所以 舊版 修改PE ... 當時我只有做成 下參數(拖曳) 這一個方法...
主要就是要方便直接拖曳 ... 沒有 輸入 PE Wim Path 的功能 ...
而拖曳...就不可能先用 系統管理員 去執行
不然就是要先 系統管理員 執行 CMD ... 到 CMD 下手動下 SetupWin.cmd 指令 加參數 WIM檔

舊版 無參數 執行...只會做 Subst 而以
新版就是針對這個...補寫上去的
如果在 Windows 下(以 CmdLine 是否有值來判斷)... 無參數時... 會當成要 修改PE
會出現...輸入 PE Wim Path ...
這樣就可以用 系統管理員 執行 SetupWin.cmd ... 然後拖曳檔案到 CMD Console 視窗中

簡單說就是...除了舊版原本...加參數 Wim 檔的方式 外...加上
在 Windows 下 無參數 時... 會自動找 boot.wim ... 找不到 boot.wim , 則可以輸入 PE Wim Path 的功能 而以
所以如果是在 PE 就沒這功能...
不過 PE 也沒 系統管理員 的問題...直接拖曳 WIm檔 到  SetupWin.cmd 上就可以

註:
直接 拖曳 ... 其實就是自動加參數...
例如 ... 把 d:\sources\boot.wim 拖到 d:\sources\SetupWin.cmd ...
其實就是執行 d:\sources\SetupWin.cmd d:\sources\boot.wim
若路徑含有 空白...也會自動加上 " "
若是拖曳到 Console 視窗...就是把檔案路徑...貼到 Console 視窗中
所以拖曳...只是原本 Windows 檔案總管的功能...
新版 SetupWin.cmd 本身其實就只是
加參數 Wim 檔
無參數 僅在 Windows 下 ... 自動找 boot.wim ... 找不到 boot.wim , Console 視窗中 手動輸入 Wim檔
發表於 2016-5-9 01:33:38 | 顯示全部樓層
本帖最後由 2567288 於 2016-5-9 01:35 編輯

實際改整合光碟 , 看一下效果
win10 的 setup.exe 可以是找 sources , 也可以找 x86(x64)\sources , 所以 win10 就只有一個目錄
01.png

02.png

setupwin目錄的檔案結構
J:\SETUPWIN
├─w10
│  ├─x64
│  │  └─sources
│  │          install.esd
│  │          setup.exe
│  │         
│  └─x86
│      └─sources
│              install.esd
│              setup.exe
│              
├─w70x64
│  └─sources
│          install.swm
│          install2.swm
│          setup.exe
│         
├─w70x86
│  └─sources
│          install.wim
│          setup.exe
│         
├─w81x64
│  └─sources
│          ei.cfg
│          install.esd
│          setup.exe
│         
└─w81x86
    └─sources
            ei.cfg
            install.esd
            setup.exe

測試項目
03.png

win7x86
04.png

05.png

win7x64
06.png

07.png

win81x86
08.png

09.png

win81x64
10.png

11.png

win10x86
12.png

13.png

win10x64
14.png

15.png


 樓主| 發表於 2016-5-9 05:34:36 | 顯示全部樓層
本帖最後由 阿達金田一 於 2016-5-9 05:36 編輯
2567288 發表於 2016-5-9 01:33
實際改整合光碟 , 看一下效果
win10 的 setup.exe 可以是找 sources , 也可以找 x86(x64)\sources , 所以 w ...

感謝大大詳細的測試...
其實就是保持 安裝光碟 的 原始安裝來源結構
Win10 可以用
x64\Sources
x86\Sources
這我還真不知道
 樓主| 發表於 2016-5-10 11:02:40 | 顯示全部樓層
主題更新...
新增一個 結構範例
更新版本...在 Windows 中 修改PE 時...可以使用 Subst目錄 ... 會修改其中的 Sources\boot.wim
發表於 2016-5-14 02:34:49 | 顯示全部樓層
本帖最後由 2567288 於 2016-5-14 02:43 編輯

金大來請教幾個問題

我把您 2016.5.10 的 範例結構 , 做成 cd/usb legacy + uefix86 + uefix64 的 iso 檔
因為考慮 install.wim 可能大於 4G(ntfs) , 及 uefi fat32 的啟動, 把檔案結構改成
(1) legacy grub4dos 引導
(2) 拆分 sources 目錄下的 boot.wim


完整結構
K:\
│  grldr
│  
├─boot
│  │  bcd
│  │  boot.sdi
│  │  bootmgr
│  │  bootvhd.dll
│  │  hdd
│  │  memtest.exe
│  │  
│  ├─fonts
│  │      cht_boot.ttf
│  │      wgl4_boot.ttf
│  │      
│  └─zh-tw
│          bootmgr.exe.mui
│          memtest.exe.mui
│         
├─bootwin
│  ├─win10x64
│  │  └─sources
│  │          boot.wim
│  │          setupwin.cmd
│  │         
│  ├─win10x86
│  │  └─sources
│  │          boot.wim
│  │          setupwin.cmd
│  │         
│  ├─win7x64
│  │  └─sources
│  │          boot.wim
│  │          setupwin.cmd
│  │         
│  ├─win7x86
│  │  └─sources
│  │          boot.wim
│  │          setupwin.cmd
│  │         
│  ├─win81x64
│  │  └─sources
│  │          boot.wim
│  │          setupwin.cmd
│  │         
│  ├─win81x86
│  │  └─sources
│  │          boot.wim
│  │          setupwin.cmd
│  │         
│  ├─win8x64
│  │  └─sources
│  │          boot.wim
│  │          setupwin.cmd
│  │         
│  └─win8x86
│      └─sources
│              boot.wim
│              setupwin.cmd
│              
├─efi
│  ├─boot
│  │  │  bootia32.efi
│  │  │  bootx64.efi
│  │  │  
│  │  └─zh-tw
│  │          bootia32.efi.mui
│  │          bootx64.efi.mui
│  │         
│  └─microsoft
│      └─boot
│          │  bcd
│          │  boot.stl
│          │  memtest.efi
│          │  memtest32.efi
│          │  
│          ├─fonts
│          │      cht_boot.ttf
│          │      wgl4_boot.ttf
│          │      
│          └─zh-tw
│                  memtest.efi.mui
│                  memtest32.efi.mui
│                  
└─setupwin
    ├─win10x64
    │  └─sources
    │      │  install.esd
    │      │  setup.exe
    │      │  
    │      └─$oem$
    │          └─$1
    │              └─Program Files
    │                  └─KMS_VL_ALL
    │                      │  KMS_VL_ALL.cmd
    │                      │  
    │                      ├─32-bit
    │                      │      SppExtComObjHook.dll
    │                      │      SppExtComObjPatcher.exe
    │                      │      vlmcsd.exe
    │                      │      
    │                      └─64-bit
    │                              SppExtComObjHook.dll
    │                              SppExtComObjPatcher.exe
    │                              
    ├─win10x86
    │  └─sources
    │      │  install.esd
    │      │  setup.exe
    │      │  
    │      └─$oem$
    │          └─$1
    │              └─Program Files
    │                  └─KMS_VL_ALL
    │                      │  KMS_VL_ALL.cmd
    │                      │  
    │                      ├─32-bit
    │                      │      SppExtComObjHook.dll
    │                      │      SppExtComObjPatcher.exe
    │                      │      vlmcsd.exe
    │                      │      
    │                      └─64-bit
    │                              SppExtComObjHook.dll
    │                              SppExtComObjPatcher.exe
    │                              
    ├─win7x64
    │  └─sources
    │          install.wim
    │          setup.exe
    │         
    ├─win7x86
    │  └─sources
    │          install.wim
    │          setup.exe
    │         
    ├─win81x64
    │  └─sources
    │          ei.cfg
    │          install.esd
    │          setup.exe
    │         
    ├─win81x86
    │  └─sources
    │          ei.cfg
    │          install.wim
    │          setup.exe
    │         
    ├─win8x64
    │  └─sources
    │          ei.cfg
    │          install.wim
    │          setup.exe
    │         
    └─win8x86
        └─sources
                ei.cfg
                install.wim
                setup.exe
               
您的這種方式 , 相對於 setup.exe /installfrom 的兩個優點
(1) 可以有修復磁碟機的功能
(2) 可以執行 sources\$oem$ 的功能






問題(一)
實測安裝時 , 在磁碟分割成下列圖式 , 用了 440




原本以為檔案有問題 , 同一個 iso 加入 setup.exe /installfrom 的方式 , 一樣的分割就很正常(10秒內)






問題(二)
(1) 用 05.08 的版本 , 把 boot.wim 跟 setupwin.cmd 放在一起 , 系統管理員執行 setupwin.cmd 可以修改 boot.wim


(2) 用 05.10 的版本 , 把 boot.wim 跟 setupwin.cmd 放在一起 , 系統管理員執行 setupwin.cmd 無法修改 boot.wim , 拖曳 boot.wim 也沒效果


給絕對路徑 , 圖示的目錄名稱無效是否正常 ?


問題(三)
一次映射 8 個磁碟機 , 可能有的電腦磁碟代號不夠用 , 如果不用 setupwin 目錄的方式 , 改用 SetupWin.ini
如果使用前述的檔案結構 , 例如 win10 x64 的 SetupWin.ini 放在 bootwin\win10x64\sources 目錄下
(1) 批次檔要如何改
set FindPath=\SetupWin
set SetupWinIni=\SetupWin.ini

(2) SetupWin.ini 的檔案內容 ?

謝謝




您需要登錄後才可以回帖 登錄 | 我要註冊

本版積分規則

小黑屋|手機版|NoName Team 電腦資訊討論區 |網站地圖

GMT+8, 2024-11-27 22:31 , Processed in 0.299700 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表