2008-10-17 74 views
2

我需要嚮導一次,第一次安裝後運行我的windows窗體應用程序。我可以使用像firstrun = false我想的用戶設置。但我也需要處理卸載程序的情況,然後重新安裝。該用戶設置將如何重置?它已經存在於... \ Users - user - \ AppData \ Roaming ...中的配置文件中。我需要嚮導在任何重新安裝後運行,所以我需要重置該設置。我是否需要使用自定義安裝程序操作執行此操作?c#winforms:確定程序的第一次運行

回答

2

這可能是最好讓您的安裝程序在註冊表中創建FirstRun項並將其設置爲true(或1或其他),並確保您的卸載程序完全刪除此項。然後讓應用程序在啓動時讀取該鍵,並將其設置爲false(或0或其他)。

如果用戶卸載並重新安裝應用程序,他們將在第一次運行該應用程序時再次看到該向導。

+0

如果此註冊表項是每個用戶,則只有安裝該應用程序的用戶才能獲得FRW。如果該鍵是HKLM,只有管理員用戶將能夠更新,因此,任何非管理員用戶會不斷收到FRW,直到管理員運行的應用程序。 – 2008-10-17 06:13:25

0

您可以在程序目錄中創建一個文件。卸載程序不會刪除它,因爲它不是由安裝程序添加的。

1

在設置文件或resx文件中使用名稱/值對像FirstRun = true。在啓動時閱讀此文件,如果爲true,則顯示嚮導並將其設置爲false。
每次安裝時,文件的副本都應該被覆蓋,因此您將得到FirstRun = true。每次(重新)安裝後,嚮導都會運行

+0

這不會正確地與多個Windows用戶的情況下工作。如果文件是每次安裝,則第一個運行嚮導將只爲第一個用戶運行。如果它是每個用戶,安裝將僅覆蓋安裝用戶。 – 2008-10-17 06:05:19

+0

兩種不同的東西 - 如果它是一個應用程序級別的設置,這種想法會工作..存儲和尋找它在像程序的用戶無關的位置/安裝文件夾。如果是用戶級設置,請將其存儲在用戶特定的位置。依賴於REQ是什麼... – Gishu 2008-10-17 06:31:03

2

Windows註冊表看起來像是這種設置的適當位置。安裝程序步驟可能會在用戶重新安裝時重置密鑰,或者如果您不希望在安裝之間保留任何設置,則可以在卸載時清除註冊表項。

+0

問題與註冊表,當設置進去HKCU那麼這是一個痛苦和非標準以清除出與安裝程序比當前用戶的其他用戶。所以如果一個不同的用戶運行(un)安裝,那麼你真的不能訪問HKCU。 – Rory 2010-10-25 22:57:50

+1

除非您使用HKLM中的鍵或值來維護已經運行嚮導的用戶列表。我喜歡這個想法,但是由於許多用戶無法寫入HKLM,因此您遇到了許可問題。這使我認爲@ Franci的答案是最好的。 – Rory 2010-10-25 23:01:59

2

如果多個Windows用戶使用相同的應用程序,則每個用戶的真/假設置將無法正常工作。作爲Windows用戶之一,安裝程序僅運行一次,並且無法訪問該計算機上所有其他用戶的每用戶設置。

您可以在安裝時將每臺機器標誌設置爲true。但是,如果管理員用戶運行FRW並對其進行更改,則其他用戶將無法獲得FRW。如果非管理員用戶運行FRW,他們將無法更改它,並將在下次應用程序再次運行時運行FRW。

您需要的是機器範圍的isntallation時間戳和FRW運行時的每用戶時間戳。以下是該場景:

安裝時,在您的應用程序的HKLM註冊表中添加一個時間戳。對於每個用戶,當應用程序啓動時,請在上述每個用戶設置文件中檢查第一次運行wizzard(FRW)的時間戳。如果每個用戶的時間戳早於HKLM安裝戳,請爲該用戶運行FRW並更新每個用戶的設置文件。

如果應用被卸載,然後重新安裝,安裝程序會更新HKLM時間戳,從而導致FRW要爲所有用戶再次運行。

0

我建議改變你的程序的行爲,並重新安裝後不重新配置設置。畢竟,用戶已經做出了他或她的選擇,爲什麼又要問同樣的問題呢?

1

可以存儲已經運行配置嚮導的用戶列表。

此列表可以存儲在機器級配置文件或應用程序目錄中。當應用程序重新安裝時,可以清除該列表。

而不是看着FirstRun,你只需檢查與列表中的當前用戶。如果用戶在列表中,則跳過配置嚮導。如果用戶不在列表中,請顯示配置嚮導。

0

到@Franci佩諾夫的建議類似,我會做這樣的:

  • 在安裝,使用創建一個新生成的GUID註冊表值HKLM \ SOFTWARE \ YourCompany \ YourApp \ InstallId。

  • 在爲用戶首次運行,比較該值HKCU \ SOFTWARE \ YourCompany \ YourApp \ InstallId。

  • 如果HKCU值不存在或者它們不同,請運行您的首次運行邏輯,然後將HKLM \ Software \ YourCompany \ YourApp \ InstallId複製到HKCU \ Software \ YourCompany \ YourApp \ InstallId。

這具有不受時間變化影響的(微小)優勢。

相關問題