![](/img/trans.png)
[英]How to make a System.Configuration.Install.Installer to get a variable from the Setup project?
[英]Reboot system from Setup project
我正在使用Visual Studio創建一個安裝項目。 我想在安裝成功完成后重啟系統。
我想要一次性的努力。 我不希望每次使用任何外部工具/實用程序修改設置,然后再將其提供給客戶端。
我可以調整安裝項目本身嗎?
我怎樣才能做到這一點?
試試這個:
在單獨的解決方案中創建一個空的合並模塊項目並構建它。 這將在項目的Debug或Release文件夾中創建一個msm文件。
編輯Orca中產生的MSM -設置重啟=強制屬性如圖所示這里 。 你只需要這樣做一次。
在主解決方案中,將合並模塊添加到安裝項目並構建它。 由於合並模塊是單獨構建的,因此它將保留reboot屬性並將其合並到您的MSI中。
請不要讓我失望,但我不會回答您的具體問題,但這是一種在msi安裝后重啟PC的方法。
使用WiX ,VS內置設置更加靈活,VS有一個插件。
如果您使用WiX,則這是啟動重新啟動的代碼。
<InstallExecuteSequence>
<ScheduleReboot After='InstallFinalize' />
</InstallExecuteSequence>
或者,您可以為VS安裝項目創建一個轉換,該轉換僅包含用於啟動重新啟動的其他條目,然后您構建項目的任何時候都需要執行轉換,您可以將其發送給批處理文件或類似的客戶。
ps請記住,發出shell命令作為自定義操作並不是最好的方法。 這將導致計算機重新啟動並且不返回正確的退出代碼3010,因此如果有人試圖捕獲退出代碼或在命令行上執行/ norestart,則shell命令將忽略此操作。
編輯一旦你創建了一個msi文件,用orca打開它,然后在表格中添加必要的更改到schedulereboot。 將更改保存為轉換,然后只要msi文件沒有顯着變化,您就可以在每次運行時將轉換應用到msi。
Personaly我不想這樣做,因為它是一個額外的步驟,你應該能夠在源頭做到這一點。
要在orca中添加重新啟動序列,請轉到InstallExecuteSequence表並找到InstallFinalize條目。 添加一個名為ScheduleReboot的新條目,並在序列列中輸入一個比InstallFinalize階段的序列大1的數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.