2010-05-21 29 views
4

我正在使用Visual Studio創建安裝項目。我想在安裝成功完成後重新啓動系統。從安裝項目重新啓動系統

我想要一次努力。我不想在每次使用任何外部工具/實用程序將設置交付給客戶端之前修改設置。

我可以調整安裝項目本身嗎?

我該怎麼做?

回答

1

請不要swhoot我失望,但是我不會回答你的具體問題,但是這是要重新啓動電腦的MSI安裝後一種方式。

改爲使用WiX,它在安裝時內置的VS更加靈活,並且有一個VS插件。

如果你確實使用了WiX,這是啓動重啓的代碼。

<InstallExecuteSequence> 
    <ScheduleReboot After='InstallFinalize' /> 
</InstallExecuteSequence> 

另外,您可以創建一個只包含其他條目,以啓動重新啓動你的VS安裝項目的變換,那麼任何時候你建立你的項目,所有你需要做的就是應用轉換,你可以將此包給客戶在批處理文件或類似的文件中。

ps請記住,發出一個shell命令作爲自定義操作不是最好的方法。這將導致機器重新啓動並且不會返回正確的exit code 3010,所以如果有人試圖捕獲退出代碼或在命令行上執行/ norestart命令,shell命令將忽略此操作。

編輯 一旦你創建了一個msi文件與orca打開它,然後添加到表進行必要的修改,以schedulereboot。只要msi文件不會發生顯着變化,只需將轉換應用到msi即可。

Personaly我不想這樣做,因爲它是一個額外的步驟,你應該能夠在源代碼中完成。

若要在orca中添加重新引導序列,請執行InstallExecuteSequence表並找到InstallFinalize條目。添加名爲ScheduleReboot的新條目,並在順序列中輸入比InstallFinalize階段序列大1的數字。

+0

您能否詳細說明VS設置項目的變換? – Ram 2010-05-21 10:27:09

2

您可以使用ORCA來做到這一點。

看到這個微軟HOW TO文章詳細內容:

http://support.microsoft.com/kb/827020

+0

我檢查了這個鏈接。在這種情況下,我或任何其他開發人員在將設置交付給客戶端之前需要每次使用ORCA修改MSI。我不能一次性修復嗎? – Ram 2010-05-21 10:06:52

+0

我不知道任何其他方式,你可以用Oded的答案,並添加關閉命令作爲自定義操作。不過,我建議小心確保先告訴用戶這件事,因爲如果你沒有任何提示重新啓動他們的PC,他們可能會有點不安... – 2010-05-21 10:17:15

2

嘗試了這一點:

創建一個空的合併模塊項目,在一個單獨的解決方案,並建立它。這將在項目的Debug或Release文件夾中創建一個msm文件。

在Orca中編輯生成的msm - 設置REBOOT = Force屬性,如here所示。你只需要做一次。

在您的主要解決方案中,將合併模塊添加到您的安裝項目並構建它。由於合併模塊是單獨構建的,它將保留重新引導屬性並將其合併到您的MSI中。

相關問題