我需要嚮導一次,第一次安裝後運行我的windows窗體應用程序。我可以使用像firstrun = false我想的用戶設置。但我也需要處理卸載程序的情況,然後重新安裝。該用戶設置將如何重置?它已經存在於... \ Users - user - \ AppData \ Roaming ...中的配置文件中。我需要嚮導在任何重新安裝後運行,所以我需要重置該設置。我是否需要使用自定義安裝程序操作執行此操作?c#winforms:確定程序的第一次運行
回答
這可能是最好讓您的安裝程序在註冊表中創建FirstRun項並將其設置爲true(或1或其他),並確保您的卸載程序完全刪除此項。然後讓應用程序在啓動時讀取該鍵,並將其設置爲false(或0或其他)。
如果用戶卸載並重新安裝應用程序,他們將在第一次運行該應用程序時再次看到該向導。
您可以在程序目錄中創建一個文件。卸載程序不會刪除它,因爲它不是由安裝程序添加的。
在設置文件或resx文件中使用名稱/值對像FirstRun = true。在啓動時閱讀此文件,如果爲true,則顯示嚮導並將其設置爲false。
每次安裝時,文件的副本都應該被覆蓋,因此您將得到FirstRun = true。每次(重新)安裝後,嚮導都會運行
這不會正確地與多個Windows用戶的情況下工作。如果文件是每次安裝,則第一個運行嚮導將只爲第一個用戶運行。如果它是每個用戶,安裝將僅覆蓋安裝用戶。 – 2008-10-17 06:05:19
兩種不同的東西 - 如果它是一個應用程序級別的設置,這種想法會工作..存儲和尋找它在像程序的用戶無關的位置/安裝文件夾。如果是用戶級設置,請將其存儲在用戶特定的位置。依賴於REQ是什麼... – Gishu 2008-10-17 06:31:03
Windows註冊表看起來像是這種設置的適當位置。安裝程序步驟可能會在用戶重新安裝時重置密鑰,或者如果您不希望在安裝之間保留任何設置,則可以在卸載時清除註冊表項。
如果多個Windows用戶使用相同的應用程序,則每個用戶的真/假設置將無法正常工作。作爲Windows用戶之一,安裝程序僅運行一次,並且無法訪問該計算機上所有其他用戶的每用戶設置。
您可以在安裝時將每臺機器標誌設置爲true。但是,如果管理員用戶運行FRW並對其進行更改,則其他用戶將無法獲得FRW。如果非管理員用戶運行FRW,他們將無法更改它,並將在下次應用程序再次運行時運行FRW。
您需要的是機器範圍的isntallation時間戳和FRW運行時的每用戶時間戳。以下是該場景:
安裝時,在您的應用程序的HKLM註冊表中添加一個時間戳。對於每個用戶,當應用程序啓動時,請在上述每個用戶設置文件中檢查第一次運行wizzard(FRW)的時間戳。如果每個用戶的時間戳早於HKLM安裝戳,請爲該用戶運行FRW並更新每個用戶的設置文件。
如果應用被卸載,然後重新安裝,安裝程序會更新HKLM時間戳,從而導致FRW要爲所有用戶再次運行。
我建議改變你的程序的行爲,並重新安裝後不重新配置設置。畢竟,用戶已經做出了他或她的選擇,爲什麼又要問同樣的問題呢?
可以存儲已經運行配置嚮導的用戶列表。
此列表可以存儲在機器級配置文件或應用程序目錄中。當應用程序重新安裝時,可以清除該列表。
而不是看着FirstRun,你只需檢查與列表中的當前用戶。如果用戶在列表中,則跳過配置嚮導。如果用戶不在列表中,請顯示配置嚮導。
到@Franci佩諾夫的建議類似,我會做這樣的:
在安裝,使用創建一個新生成的GUID註冊表值HKLM \ SOFTWARE \ YourCompany \ YourApp \ InstallId。
在爲用戶首次運行,比較該值HKCU \ SOFTWARE \ YourCompany \ YourApp \ InstallId。
如果HKCU值不存在或者它們不同,請運行您的首次運行邏輯,然後將HKLM \ Software \ YourCompany \ YourApp \ InstallId複製到HKCU \ Software \ YourCompany \ YourApp \ InstallId。
這具有不受時間變化影響的(微小)優勢。
- 1. 確定當我的應用程序運行的第一次
- 2. 如何確定用戶是第一次運行應用程序?
- 3. EnumWindowsProc()僅在第一次運行程序時運行
- 4. 爲什麼第一次運行C程序,運行速度慢了10倍
- 5. C#Winforms應用程序打開第二個Winforms應用程序
- 6. 如何確定JavaScript函數的第一次運行?
- 7. 應用程序運行一次,但第二次崩潰
- 8. VBA程序不會運行第二次
- 9. 如果第二次啓動,C#程序只能運行一次+ BringToFront
- 10. 核心數據,在第一次運行時將不會顯示在UITableView的,第二次運行數據確定
- 11. 如何檢查第一次運行的應用程序是否從第一次運行主要活動
- 12. 根據應用程序是否第一次運行檢索正確的數據
- 13. 線程運行僅第一次
- 14. 確定作業今天是否第一次運行
- 15. 應用程序的第一次執行
- 16. 確定iPhone應用程序的第一次使用
- 17. 找不到* apk,第一次運行,但在第二次運行
- 18. RxSwift代碼第一次運行,第二次運行
- 19. 第二次scanf不會運行,程序只是終止。 C
- 20. 應用程序第一次運行良好,但第二次崩潰
- 21. 運行託管應用程序第二次表現出了比第一次
- 22. 在第一次運行時運行一次特定的代碼Android
- 23. 顯示不同的屏幕第一次運行應用程序
- 24. 如何檢查AIR應用程序的第一次運行
- 25. 檢測應用程序的第一次運行
- 26. 要檢測應用程序的第一次運行
- 27. 有條件的第一次運行處理程序
- 28. 如何檢測程序的第一次運行?
- 29. 實體框架 - ProviderIncompatibleException只有第一次運行我的程序
- 30. 如何理解應用程序的第一次運行
如果此註冊表項是每個用戶,則只有安裝該應用程序的用戶才能獲得FRW。如果該鍵是HKLM,只有管理員用戶將能夠更新,因此,任何非管理員用戶會不斷收到FRW,直到管理員運行的應用程序。 – 2008-10-17 06:13:25